c++ vector基本函数、排序、查找用法

2023-11-16

终于把自己的个人博客安排上啦!

欢迎访问我的个人博客 XJHui's Blog

vector用法目录:

1、基本用法

2、vector的删除操作

3、vector的sort排序

4、翻转vector中的所有元素

5、find()函数的用法

6、vector实战(这里写的是我在最开始用vector时候犯的错误)


1、基本用法:

头文件:

#include<vector>

定义vector:

整数型:    vector<int>a;
字符型:    vector<char>a;
字符串型:  vector<string>a; (注意字符串型输入输出用cin和cout)

固定vector的大小:
           vector<int>a(105);

在容器最后存入新元素:

for(int i=0;i<10;i++){
    b.push_back(i);
}

将字符数组中的数据赋值给容器:

1、遍历赋值:
    char a[MAX+5];
    vector<char>vc;
    cin>>a;
    int la=strlen(a);
    for(int i=0;i<la;i++) 
        vc.push_back(a[i]);
2、定义容器时赋值:
    char a[MAX+5];
    cin>>a;
    int la=strlen(a);
    vector<char>vc(a,a+la);

判断容器的长度:

printf("%d\n",b.size());

遍历容器中元素:

1、遍历输出    
    for(int i=0;i<vc.size();i++)
        printf("%c",vc[i]);
     printf("\n");
2、错误示例:
    for(int i=vc.begin();i<vc.end();i++){
        cout<<vc[i]<<" ";
    }
    cout<<endl;

清空容器、判断是否为空、删除最后元素:

清空容器: a.clear();//清空a中的元素
判断容器是否空:a.empty();//判断a是否为空,空则返回ture,不空则返回false
删除容器最后的元素:  a.pop_back(); ///括号内不可以添加index删除指定元素

2、vector的删除操作

  vector很好的一点就是可以实现删除操作,用它来做模拟很好实现。

1、函数使用:
    vc.erase(vc.begin(),vc.end()); ///vc.erase()可以删除一个或多个元素
2、说明:
    vc.erase()函数中添加的地址范围是左闭右开区间,删除内容后,如果后面还有元素,会自动补全空位。
3、注意:
    ///vc.erase()函数中不是直接加要删除的内容,下面例子是错误的。
    vc.erase('a');          

3、vector的sort排序(加#include<algorithm>头文件)

将元素从小到大的顺序排列(默认):

int c1[]={1,3,11,2,66,22,-10};
vector<int>c(c1,c1+7); ///赋初值
sort(c.begin(),c.end());
for(int i=0;i<c.size();i++){
    printf("%d ",c[i]); 
}
printf("\n");

重写cmp函数按要求排序:

#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
bool cmp(int x,int y) ///cmp函数传参的类型不是vector<int>型,是vector中元素类型,即int型
{
    return x>y;
}
int main()
{
    int c1[]={1,3,11,2,66,22,-10};
    vector<int> c(c1,c1+7);
    sort(c.begin(),c.end(),cmp);
    for(int i=0;i<c.size();i++){
        printf("%d ",c[i]);
    }
    printf("\n");
    return 0;
}

 vector<node>(结构体)的cmp函数与其类似

4、翻转vector中的所有元素:

int d1[]={1,3,11,2,66,22,-10};
vector<int> d(d1,d1+7);

reverse(d.begin(),d.end()); ///不是d.reverse()

for(int i=0;i<d.size();i++){
    printf("%d ",d[i]);
}
printf("\n");

5、find()函数的用法:

int temp1[]={ 1,3,2,4,5,0 };
vector<int> temp(temp1,temp1+6);

vector<int>::iterator it=find(temp.begin(),temp.end(),3);///返回的是地址

int index=&*it-&temp[0];///放入迭代器中得到容器中的位置

printf("%d\n",index);

6、vector实战:(这里写的是我在最开始用vector时候犯的错误)

  vector没申请不能直接赋值

    vector<int>a;
    for(int i=0;i<10;i++){
        a[i]=5; ///vector[i]根本没被申请,所以不可以直接赋值
    }
    vector<int>a;
    for(int i=0;i<10;i++){
        a.push_back(i); ///申请a[3]后,下面可以直接改变它的值
    }
    a[3]=6;
    vector<int>a(10);///先申请一个大小为10的向量后也可以直接改变a[3]的值
    a[3]=6; 

(上面只是vector的一部分内容,后续会逐渐补充,不足请评论)

如果对博客搭建感兴趣可以看我另一篇博客:Hexo博客框架攻略

也欢迎到我的个人博客评论、留言:XJHui's Blog

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++ vector基本函数、排序、查找用法 的相关文章

随机推荐

  • 12、文件链接、磁盘阵列、文件系统、网络协议、数据封装过程

    一 文件链接 ln s 软链接 ln 硬链接 区别 1 软链接产生新的inode号 硬链接不产生新的inode号 ls i 看inode 2 源文件删除后 软链接文件不可以用 硬链接文件可用 3 软链接可以跨分区 硬链接不可以跨分区 4 不
  • 关于扫描二维码拒绝获取摄像头权限导致的错误解决方法

    这个问题烦了我2天 在网上查阅资料 也许是自己的理解错误 怎么改都不行 今天换了一种思维 解决了这个问题 废话不多说 先上代码 try mCameraManager openDriver catch IOException e e prin
  • ROS集成开发环境搭建【安装VScode】

    1 下载 注意 下载操作是在虚拟机中的Ubuntu中进行的 可以下载到 home 下载 文件夹中 vscode 下载链接 最新版本 Documentation for Visual Studio CodeFind out how to se
  • (c/c++)——STL

    文章目录 一 迭代器 iterator 二 容器 1 string 2 Vector 最常用 3 list 4 map 5 unordered map 6 queue 三 算法 1 for each 2 find if 3 sort 一 迭
  • 大数据毕业设计 人脸识别与疲劳检测系统 - python opencv 图像识别

    文章目录 0 前言 1 课题背景 2 Dlib人脸识别 2 1 简介 2 2 Dlib优点 2 3 相关代码 2 4 人脸数据库 2 5 人脸录入加识别效果 3 疲劳检测算法 3 1 眼睛检测算法 3 2 打哈欠检测算法 3 3 点头检测算
  • taro框架开发小程序经验总结

    最近这一年来 做了三个小程序 第一个小程序用的原生框架 所有的样式和js都要自己写 不好看还写得头疼死 写第二个小程序的时候正觉得VUE3流行 想熟悉一下VUE3 因此找到了taro框架 这个框架好不好我也无从分辨 暂时能用就行 一 搭建项
  • 手把手看监控--当不设置JVM-Xms时

    背景 运维埋的一个坑 在该应用上只配置留 Xmx 没有配置 Xms 表象 堆内存从0 2G开始 最大到0 8G 就开始执行GC 导致频繁GC 大致间隔1分钟 次 从下图左侧即可看到 解决 增加 Xms重新发版本 堆内存 GC间隔明显看着好多
  • 网关服务器性能,服务网关API路由导致的性能问题分析

    背景 酷家乐是从 16 年初开始进行服务化改造的 因为一些特殊原因 无法直接使用主流的dubbo 或 spring cloud 因此酷家乐研发团队在开源的基础上做了二次开发 迅速上线了一套定制型的微服务框架 和其他微服务框架类似 酷家乐自己
  • Python3中使用argparse模块解析命令行参数

    argparse是Python的一个标准模块 用于解析命令行参数 即解析sys argv中定义的参数 实现在 https github com python cpython blob main Lib argparse py argpars
  • vs2017,vs2019 无法连接到Web服务器“IIS Express”

    不知道啥原因 突然就不能访问了 我的解决方式 在项目的根目录下显示所有隐藏的文件 找到 vs文件夹 删除 重启项目 尝试运行 发现正常了 完 转载于 https www cnblogs com lishidefengchen p 11434
  • C++及模式设计系列

    1 博客 偶尔e网事 C http blog csdn net jackyvincefu article category 1501695 1 1 博客 wuzhekai1985 设计模式C 实现 http blog csdn net wu
  • Ubuntu 玩机笔记

    文章目录 键盘Fn无法切换功能键与多媒体键 永久生效 保持Typore旧版本 不自动更新 修改日期显示为英文 键盘Fn无法切换功能键与多媒体键 终端输入 echo 2 sudo tee sys module hid apple parame
  • CMAKE_INSTALL_PREFIX无效的解决方案

    今天写一段cmake脚本 使用了变量CMAKE INSTALL PREFIX 命令如下 SET CMAKE INSTALL PREFIX
  • 计算机复试练习题2

    1求1 2 20 include
  • zjy-easyinput文本框带按钮,uni-easyinput增强版

    一 zjy calendar简介 zjy calendar日历是对uniapp uni easyinput文本框的增强 支持文本框前后加按钮 二 使用方法 源使用说明 https uniapp dcloud net cn component
  • 功率和evm的关系_详解功率放大器PA设计指标

    PA指标分析 一 PA的工艺 PA的设计指标包括频率 带宽 功率 效率 线性度 甚至可能也要要求噪声 目前主要有两种工艺CMOS和GaAs CMOS工艺 比GaAs有优势的地方 主要是集成度和成本 所以但凡是要求效率 噪声 线性度等指标的放
  • STM32 以太网W5500

    文章目录 W5500简介 以太网接入方案 SPI读写访问 寄存器以及地址 源码以及配置 实现 TCP Server 三次握手过程 SPI 配置 网络相关函数 W5500简介 W5500 是一款全硬件 TCP IP 嵌入式以太网控制器 为嵌入
  • 嵌入式(线程的创建和回收)

    线程的创建 include
  • 我的第一个油猴脚本「屏蔽CSDN底下的登录栏」

    CSDN博客不登录就弹这么个东西 挡住视线不胜其烦 你问我为啥不登录 登录过呀 关了浏览器又要重新登 csdn的session不保存的吗 emmmm我也不太懂这方面的东西 于是我就想 在每次访问csdn博客的时候 浏览器都能自动执行一个js
  • c++ vector基本函数、排序、查找用法

    终于把自己的个人博客安排上啦 欢迎访问我的个人博客 XJHui s Blog vector用法目录 1 基本用法 2 vector的删除操作 3 vector的sort排序 4 翻转vector中的所有元素 5 find 函数的用法 6 v