1.头文件
#include <vector>
2.初始化
vector<int> test; //默认初始化?
vector<int> test2(test1); 或 vector<int> test2 = test1; //拷贝复制
vector<int> test = {1,2,3,4,5,6,7}; //直接赋值初始化
int a[] ={1,2,3,4,5}; vector<int> test(a,a+5); //通过数组初始化
vector<int> test(7,3);//初始化test时在list中压入7个值为3的元素,若“3”的部分缺省,则会在test中压入7个0。
vector< vector<int> > test(i,vector<int>(j,val));? ?//定义一个 i * j 的值为val的int型二维向量
3.添加函数
int i = 1;
test.push_back(i);? ?//将1加入到vector中
test.insert(test.begin() + i,val);? ?//在test的第i个元素的位置插入值为val的元素。例如test 为1,2,3,4。i为1的情况下变为 1,val,2,3,4。
test.insert(test.begin() + i,k,val);? ?//在test的第i个元素位置插入k个值为val的元素。
test.insert(test.begin() + i,a + j,a + k);? ?//a为数组,在test的第i个位置插入a的第j到k的元素(不包括a + k)。例如v1.insert(v1.begin(),v2.begin(),v2.end());就是将v2加入到v1前。
4.删除函数
test.pop_back();? ?//删除容器中最后一个元素,该容器size会发生减1,但容量capacity不变。
test.erase(test.begin() + i);? ?//删除vector容器中第i(i = 0,1,2,...)位置上的元素。
test.erase(test.begin() + i , test.begin() + j);? ?//删除第 i 到 j - 1(i,i+1,i+2,...,j-2,j-1)的元素。? ?
test.remove(test.begin() + i,test.begin() + j,val);? ?//删除第i到j范围内等于val的值,但该方法只是把val移到末尾,并不是真的删除。不会改变容器的大小和容量。
test.clear();? ?//将容器清空,改变大小不改变容量。
5.遍历函数
test.at(i);? ?//得到i位置的数据,相当于test[i];
test.begin();? ?//得到数组头指针,指向第1个元素
test.end();? ?//返回向量尾指针,指向向量最后一个元素的下一个位置
test.front();? ?//返回第一个元素
test.back();? ?//返回最后一个元素
//得到数组第一个元素用test.begin()或者test.front()。得到最后一个元素则是test.end() - 1 或 test.back();
6.其他函数
test.size();? ?//使用数据的大小,即返回向量中元素的个数
test.capacity();? ?//容量,当前vector分配的大小
test.empty();? ?//判断是否为空,bool类型,如果为空返回true,否则false;
test.max_size();? ?//得到vector最大可以是多大;
test1.swap(test2);? ?//交换test1和test2;
7.其他用法
排序用法
sort(test.begin(),test.end());? ?//将vector整体进行快排,默认小到大。?
sort需要头文件? ?#include<algorithm>
如果需要降序,可重写规则
bool compare(int a,int b) { return a >?b; //降序排列,如果改为return a<b,则为升序 }
sort(test.begin(),test.end(),compare);? ?//降序
倒置用法
需要头文件? ?#include<algorithm>
reverse(test.begin(),test.end());? ?//对test进行倒置,比如1,2,3,4变为4,3,2,1。
|