C++中vector的常用操作

vector的常用操作

定义和初始化
vector<T> v1;//空vector
vector<T> v2(v1);//v2包含v1所有元素的副本
vector<T> v2 = v1;//同上
vector<T> v3(n,val);//n个val
vector<T> v4(n);//n个重复地执行了值初始化的对象
vector<T> v5{
    
    a,b,c,...};//包含了初始值个数的元素,每个元素被赋予相应的初始值
vector<T> v6 = {
    
    a,b,c,...};//同上

vector<vector<int>> matrix(row,vector<int>(col,0));//定义并初始化二维向量
插入
vector<int> a{
    
    1,2,3};
a.push_back(4);//在末尾添加4
a.insert(a.begin()+1,5);//在a的第1个元素前插入数值5
a.insert(a.begin()+1,3,5);//在a的第1个元素前插入3个数,其值都为5
a.insert(a.begin()+1,b.begin(), b.end());//b为数组,在a的第1个元素前插入b的全部元素,可以用于合并两个向量
删除
b.pop_back();//删除末尾元素
b.erase(b.begin()); //将起始位置的元素删除
b.erase(b.begin(), b.begin()+3); //将(b.begin(), b.begin()+3)之间的元素删除
截取
vector<int> b(a.begin(), a.begin()+3);//将a中从a.begin()开始的3个元素赋值给b
vector<int> b; 
b.assign(a.begin(),a.begin()+3);//同上
交换
a.swap(b);//b为向量,将a中的元素和b中的元素进行整体性交换
头文件algorithm中的几个重要函数

排序sort

sort(num.begin(),num.end(),sortFun);//如果shinint型,第三个参数可以使用less< int>()从小到大排序或者greater< int>()从大到小排序,是自定义类型话或者复杂类型就需自己定义比较规则函数sortFun。

vector<int> num;
sort(num.begin(),num.end());//默认是升序

倒置reverse
头文件algorithm

reverse(a.begin(),a.end());//将a倒置

复制copy

copy(a.begin(),a.end(),b.begin()+1); //把a中的从a.begin()(包括它)到a.end()(不包括它)的元素复制到b中,从b.begin()+1的位置(包括它)开始复制,覆盖掉原有元素

查找find

find(a.begin(),a.end(),10); //在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置

返回类型是迭代器,如果没有找到,则返回a.end()

返回元素
a.back();//返回a的最后一个元素
a.front();//返回a的第一个元素
a.at(ind);//返回下标为ind的元素

Set

set跟vector差不多,它跟vector的唯一区别就是,set里面的元素是有序的且唯一的,只要你往set里添加元素,它就会自动排序,而且,如果你添加的元素set里面本来就存在,那么这次添加操作就不执行。要想用set先加个头文件set。

猜你喜欢

转载自blog.csdn.net/qq_42820853/article/details/106712359
今日推荐