C++ vector容器的用法
一、头文件#includeiostream#includevectorusing namespace std;或者万能头文件 #includebits/stdc.husing namespace std;二、定义vector1、定义空的vector后续存元素vectorint v1;2、指定大小初始值为0后续用下标改vectorint v2(5);3、指定大小设初始值vectorint v3(5,10)//5个104、直接初始化vectorint v4{1,2,3,4,5};vectorint v5{1,2,3,};三、添加元素存元素1、尾部添加v.push_back(10);//尾部添加10v.push_back(20);//尾部添加202、指定位置插入v.insert(v.begin(),99);//开头位置插入99v.insert(v.begin()2,88);//下标2位置插入88v.insert(v.begin(),3,5);//开头插入3个53、直接赋值覆盖vectorintv{1,2,3};v[0]10;v[1]20;//把第一个数改为10第二个数改为20四、访问元素1、下标访问像数组coutv[0]endl;coutv[1]endl;2、at访问会检查越界coutv.at(0endl;3、取第一个、最后一个元素v.front();v.back();五、for循环历遍vector1、普通下标for可以直接读直接修改forint i0;iv.size();i)coutv[i] ;//直接读取第i个元素的值v[i]v[i]*2;//直接修改原vector里的第i个元素2、范围for只读for(int x:v)coutx ;3、加修改元素forfor(int x:v)xx*2;4、迭代器forfor(vectorint::iterator itv.begin();it!v.end();it)cout*it ;5、auto简化迭代器,auto 自动推导类型不用写冗长的vectorint::iteratorfor(auto itv.begin();it!v.end();it)cout*it ;6、逆序遍历(反向迭代器rbegin,rend),rbegin()指向最后一个元素rend()指向第一个元素前的 位置for(auto itv.rbegin();it!v.rend();it)cout*it ;7、遍历并删除元素for循环不适用用while或手动控制迭代器auto itv.begin();while(it!v.end()){if(*it%20)itv.erase(it);elseit;}六、循环加添加元素1、循环输入数据到vectorvectorint v;for(int i0;in;i){cinx;v.push_back(x);}2、循环生成数据vectorintv;for(int i0;in;i){x生成规则iv.push_back(x);}七、删除元素1、删除最后一个v.pop_back();2、删除指定位置v.erase(v.begin());v.erase(v.begin()2);//删除第一个第3个元素3、清空所有v.clear();4、判断是否为空if(v.empty())cout 空的endl;八、个数与大小1、v.size()元素个数;2、v.resize(10)强制改变元素的个数多余的位置自动填0比原来小只保留前面的;九、排序、去重、反转#includealgorithm//加上算法头文件1、从小到大排序sort(v.begin(),v.end());2、从大到小排序sort(v.begin(),v.end(),greaterint());3、反转reverse(v.begin(),v.end());4、去重必须先排序sort(v.begin(),v.end());v.erase(unique(v.begin(),v.end()),v.end);十、查找元素auto itfind(v.begin(),v.end(),10);if(it!v.end())cout找到了下标it-v.begin()十一、vector存其他类型1、存字符vectorchar vc;2、存浮点数vectordouble vd;3、存字符串vectorstring vs;4、存结构体struct Stu{int id;string name;};vectorStuvst;