参考https://www.cnblogs.com/zsq1993/p/5929806.html 这位博主内容很详细
结合自己知识,整理如下,更方便使用,增加了要避开的坑和使用技巧
容器的使用
#include <vector>
{
初始化
//vector从0下标开始;
vector<int> v, v1;//空容器
vector<int> v(3)//包含3个元素;
vector<int> v(3,9)//包含3个元素,每个元素都是9;
vector<int> v(v1)//copy v1;
int a[3] = {0,1,2};
vector<int> v(a,a+3)//copy a数组;
状态
v.size()//返回v个数,空是时候是0,空时不可atuo i = v.begin();
v.begin()//首地址
v.end()//末元素地址+1;for里终止条件 auto i != v.end(); i < end(); i <= v.end()-1;
//有点像数组最后一位的空位置
v.at(i) == v[i]//推荐使用后者;
bool is = v.empty();/空返回true,不空返回false;
v.push_back(n)//在尾部添加n进容器;
v.pop_back()//删除尾元素;
二维容器
vector<vector<int>>
vector<int> v[5];
遍历
for(auto i = v.begin() ; i < v.end() ; i++ )
cout << *i;auto 推荐使用;
for(auto i = v.begin() ; i != v.end() ; i++ )
cout << *i;
for(vector<int>::iterator it = vecIntB.begin() ;it!=vecIntB.end();it++)
cout<<*it;
通过数组修改
1.通过数组方式修改, 如v[1] = 55; // 推荐使用;
删除
v.erase(v.begin()+2)//删除第3个元素(v.begin()+2地址所在);
v.erase(v.begin()+2,v.begin()+5)//删除第3-5个元素(v.begin()+4地址所在)及以后所有元素;
v.erase(v.begin(),v.end());//清空
v.clear() ;//清空;
v.pop_back() & v.erase() & v.push_back 后 v.size() 会变;
注:姑且认为中v(v.begin(),v.end()) => v(p1,p2),
p1为操作起始地址,p2为操作元素末地址+1, 类似sort();
大概就是像操作p1->p2,需要中(p1,p2+1)
(!!!此条仅为方便记忆,不保证说法的严谨,也欢迎大家指正)
如有错误,欢迎指正,如有不足,欢迎补充。
}
欢迎转载,请注明出处即可
欢迎造访我的www.github.com/15715216140