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的一部分内容,后续会逐渐补充,不足请评论)

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

  1. C++算法库学习__std::sort__对 vector进行排序_排序后就可以进行使用std::lower_bound进行二分查找(查找第一个大于等于指定值的迭代器的位置)__std::unique

    std::sort      对vector成员进行排序; std::sort(v.begin(),v.end(),compare);   std::lower_bound 在排序的vector中进行 ...

  2. NX二次开发-C++的vector排序去重用法

    #include <algorithm> //vector排序去重 sort( BoxNum.begin(), BoxNum.end()); BoxNum.erase(unique(Box ...

  3. [转] C++的STL库,vector sort排序时间复杂度 及常见容器比较

    http://www.169it.com/article/3215620760.html http://www.cnblogs.com/sharpfeng/archive/2012/09/18/269 ...

  4. L3-002 特殊堆栈 (30分) vector容器的模拟、vector容器的一些用法

    vector容器的简单应用,我们可以用vector维护一个有序数组,每次对要插入的数用upper_bound或者lower_bound来 为这个数找一个应该插入到vector的位置.另外再找一个数组来 ...

  5. 转载:Hadoop排序工具用法小结

    本文转载自Silhouette的文章,原文地址:http://www.dreamingfish123.info/?p=1102 Hadoop排序工具用法小结 发表于 2014 年 8 月 25 日 由 ...

  6. Sublime文本排序&查找重复行&删除重复行

    排序 按F9或者选择菜单:Edit > Sort Lines,对每行文本进行排序 查找重复行 排序好后,按Ctrl+F,调出查找面板 查找字符串: ^(.+)$[\r\n](^\1$[\r\n] ...

  7. 使用STL库sort函数对vector进行排序

    使用STL库sort函数对vector进行排序,vector的内容为对象的指针,而不是对象. 代码如下 #include <stdio.h> #include <vector> ...

  8. STL vector+sort排序和multiset/multimap排序比较

    由 www.169it.com 搜集整理 在C++的STL库中,要实现排序可以通过将所有元素保存到vector中,然后通过sort算法来排序,也可以通过multimap实现在插入元素的时候进行排序.在 ...

  9. 从vector容器中查找一个子串:search()算法

    如果要从vector容器中查找是否存在一个子串序列,就像从一个字符串中查找子串那样,次数find()与find_if()算法就不起作用了,需要采用search()算法:例子: #include &qu ...

  10. Java进阶(三十九)Java集合类的排序,查找,替换操作

    Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...

随机推荐

  1. swiper插件在移动端,多个swiper左右滑动时有空白的问题

    之前在项目上用到了多个swiper.但是结构结构代码css.以及js  几乎一样的除了第一个swiper左右滑动有回弹.其他都没有回弹.于是尝试了各种方法都不行. 百思不得其解 ,最后在官网终于找到了 ...

  2. 好用的python性能测试神器–Locust

    原文链接:https://mp.weixin.qq.com/s/9PxSPuHmucSLi_welq6uNQ 现在性能测试工具太多,根据业务不同使用,比如说我们熟悉的loadrunner.jmeter ...

  3. poi--读取不同类型的excel表格

    要想根据不同类型excel表格获取其数据,就要先判断其表格类型 poi-api种方法: getCellType    public int getCellType()        Return th ...

  4. 封装 private

    封装表现: 1.方法就是一个最基本封装体. 2.类其实也是一个封装体. 从以上两点得出结论,封装的好处: 1.提高了代码的复用性. 2.隐藏了实现细节,还要对外提供可以访问的方式.便于调用者的使用.这 ...

  5. js学习零碎只是汇总

    虽然JS是弱类型语言,但也有变量声明,作用域(局部和全局).  1.基础输出语句:    alert();以弹框的方式将括号内的信息输出到页面上,有一个确定按钮.    console.log();常 ...

  6. 面向对象案例 - 学生信息管理系统V1.0

    学生管理系统项目[所有知识点整合] 1. 学生管理系统项目 尝试完成以下功能 实体类: 学生类: id, 姓名,年龄,性别,成绩 需要使用数组保存学生信息 Student[] allStu 需要完成的 ...

  7. PIC单片机的定时器

    PIC单片机的定时器有3个 timer0 timer1 timer2 定时器的计算方法 256*k*Tcy=定时时间 (256-Init-value)*k*Tcy=定时时间

  8. python 验证码处理

    一. 灰度处理,就是把彩色的验证码图片转为灰色的图片. 二值化,是将图片处理为只有黑白两色的图片,利于后面的图像处理和识别 # 自适应阀值二值化 def _get_dynamic_binary_ima ...

  9. Chisel3 - util - Arbiter

    https://mp.weixin.qq.com/s/7Y23gV6yPvtmvKHTo2I8mw   基于ReadyValid接口实现的多入单出仲裁器.   参考链接: https://github ...

  10. Java实现 LeetCode 528 按权重随机选择(TreeMap)

    528. 按权重随机选择 给定一个正整数数组 w ,其中 w[i] 代表位置 i 的权重,请写一个函数 pickIndex ,它可以随机地获取位置 i,选取位置 i 的概率与 w[i] 成正比. 说明 ...