由于经常在做题中遇到,所以记录下:
#include<vector>//包含头文件
建立Vector
vector<int> test;//建立一个vector
1、获取vector里的元素个数
int len = vec.size();
2、向vector添加元素
int temp;
vec.push_back(temp);//尾插
//vector<int>vec 第一个数是 vec.front(); 最后一个数是vec.back();这里和迭代器遍历不一样,这里返回数字,那里是个指针
3、初始化vector,有五种方式
vector<int>vec; //初始化为空
vector<int>vec(v1); //用另一个vector来初始化,即构造一个副本
vector<int>vec(n, i); //大小为n,并全部初始化为元素i (常用)
vector<int>(n); //构造大小为n的容器,没有初始化里面的元素
vector<int>{1,2,3,4}; //构造大小为4,并初始化里面的各个元素
4、使用迭代器遍历容器
vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
vec[it]=0;
或者
for(auto &i:vec)
i = 0;
注意:关于vector的下标操作。vector的下标操作只能改变或者获取已有的元素的值,不能往vector里添加元素!
5、其他函数
vec.empty(); //判断是否为空,为空返回true,否则返回false;
vec.capacity(); //获取容器分配的存储空间,区别于vec,size()
vec.resize(n+m); //调整vec的大小变为n+m
vec.swap(vec2);//vec和vec2类型要相同,大小可以不同,直接交换容器内容,所有的迭代器,引用以及指针在交换后依旧有效,全都交换了一遍。
顺序容器的赋值操作:
c1 = c2 | 删除容器 c1 的所有元素,然后将 c2 的元素复制给 c1。c1 和c2 的类型(包括容器类型和元素类型)必须相同 |
c1.swap(c2) | 交换内容:调用完该函数后,c1 中存放的是 c2 原来的元素,c2 中存放的则是 c1 原来的元素。c1 和 c2 的类型必须相同。该函数的执行速度通常要比将 c2 复制到 c1 的操作快 |
c.assign(b,e) | 重新设置 c 的元素:将迭代器 b 和 e 标记的范围内所有的元素复制到 c 中。b 和 e 必须不是指向 c 中元素的迭代器 |
c.assign(n,t) | 将容器 c 重新设置为存储 n 个值为 t 的元素 |
6、vector经常用到的一些函数功能。需加头文件 #include<algorithm>
(1)对元素排序
sort(vec.begin(),vec.end());
(2)反转容器
reverse(vec.begin(), vec.end());
(3)交换元素
swap(vec[i],vec[j]);