C++的vector用法详解!!!强大索引,一目了然,分分钟搞定!!!-创新互联
新手创作中,欢迎在评论区指教~
如果该文章对你确有帮助,希望可以点个赞,让我元气满满~
持续更新中,点击关注不迷路~
话不多说,直接上代码!!!
#include// 头文件
// 1.指定大小不带初值的初始化
vectorvec(9); // 大小为9,初始值不确定(对于int类型,一般默认为0)
// 2.直观的初始化
vectorvec{1,2,3,4,5,6,7,8};
// 3.批量初始化
int size=10;
vectorvec(size,1); // 容器vec大小为10,初始值为1
// 4.通过其他容器初始化
// 假设容器b为{1,2,3,4,5}
vectorvec(b); // 整个拷贝
vectorvec(b.begin()+n,b.begin()+m); // 局部拷贝,从b.begin()+n开始,赋值(m-n)个元素
// 5.通过数组初始化
// 注意不能直接拷贝整个数组!
int b[7]={6,5,4,3,2,1,0};
vectorvec(b+n,b+m); // 与上类似
1.2 二维// vec大小为4,子数组大小为5 (4行5列)
// 指定了大小,默认值初始化为0,不要使用push_back()添加元素,采用vec[i][j]=num直接赋值
vector>vec(4,vector(5));
2 常用方法
2.1 增
2.1.1 assign()// 假设容器b为{4,3,2,1}
vec.assign(b.begin()+n,b.begin()+m); // 从b.begin()+n开始,拷贝(m-n)个元素
vec.assign(10,1); // 容器大小为10,初值为1
2.1.2 push_back()// 假设容器vec为{4,3,2,1}
vec.push_back(0); // 像容器vec最后插入元素0,vec变成{4,3,2,1,0}
2.1.3 insert()// 假设容器vec为{4,3,2,1}
vec.insert(vec.begin()+1,-9); // 在索引1的位置插入一个元素,其值为-9
// 容器vec变为{4,-9,3,2,1}
//-----------------------------------------------------------------
// 假设容器vec2为{4,3,2,1}
vec2.insert(vec2.begin()+1,2,5); // 在索引1的位置插入2个元素,其值为5
// 容器vec2变为{4,5,5,3,2,1}
//-----------------------------------------------------------------
// 假设容器vec3为{4,3,2,1},容器b为{6,7,8,9}
vec3.insert(vec3.begin()+1,b.begin()+1,b.begin()+3);
// 容器vec3变为{4,7,8,3,2,1}
2.2 删
2.2.1 pop_back()// 假设容器vec为{4,3,2,1}
vec.pop_back(); // 删除vec的最后一个元素1
2.2.2 erase()// 假设容器vec为{4,3,2,1}
vec.erase(vec.begin()+1); // 删除索引为1的元素,vec变为{4,2,1}
//-------------------------------------------------------------------------
// 假设容器vec2为{4,3,2,1}
vec2.erase(vec2.begin()+n,vec2.begin()+m); // 从第n个元素开始,删除(m-n)个元素
2.2.3 clear()// 假设容器vec为{4,3,2,1}
vec.clear(); //清空vec中的所有元素
2.3 改
2.3.1 resize()// 假设容器vec为{4,3,2,1}
vec.resize(10); // 将容器vec大小调至10,会补充元素,值随机(一般为0)
// 假设容器vec2为{4,3,2,1}
vec2.resize(3); // 将容器vec2大小调至3,会删除元素,值随机(一般从末尾删除)
// 假设容器vec3为{4,3,2,1}
vec3.resize(10,2); // 将容器vec3大小调至10,补充元素,值指定为2
2.3.2// 假设容器vec为{4,3,2,1}
// 假设容器vec2为{5,6,7,8,9}
vec.swap(vec2); // vec变为{5,6,7,8,9},vec2变为{4,3,2,1}
2.3.3 reverse()// 假设容器vec为{4,3,2,1}
reverse(vec.begin(),vec.end()); // vec变为{1,2,3,4}
2.4 查
2.4.1 find()// 假设容器vec为{4,3,4,2,1,0}
// 返回元素ele在vec中的第一个索引,ele为4时返回index=0
// 若未找到指定的元素,返回下标为vec.size()
int index=find(vec.begin(),vec.end(),ele)-vec.begin();
// 返回元素ele在vec中的第一个索引(从右往左看,索引也是从右开始),ele为4时返回index=3
// 若未找到指定的元素,返回下标为vec.size()
int index2=find(vec.rbegin(),vec.rend(),ele)-vec.rbegin();
2.4.2 front()和back()// 假设容器vec为{4,3,2,1}
vec.front(); //返回第一个元素4
vec.back(); // 返回最后一个元素1
2.4.3 empty()// 假设容器vec为{4,3,2,1}
vec.empty(); //判断vec是否为空,空则返回true;不空则返回false
2.4.4 size()// 假设容器vec为{4,3,2,1,0}
vec.size() // 返回容器大小,值为5
3 其他方法
3.1 排序vectorvec{7,5,9,2,4,1};
sort(vec.begin(),vec.end()); // 正常升序排序
// vec是二维数组[[1,2],[4,6],[3,5]]
sort(vec.begin(),vec.end(),cmp); // 自定义排序,cmp是自定义函数
bool static cmp(vector& a,vector& b) { // 按子数组右区间升序排序
return a[1]
3.2 求和vectornum{0,1,2,3};
accumulate(num.begin(),num.end(),0); // 6 (第三个参数是累加的初值)
3.3 遍历// 1.通过迭代器遍历
// 假设容器vec为{4,3,2,1}
vector::iterator iter;
for(iter=vec.begin();iter!=vec.end();iter++) {
cout<<*iter<
// 2.通过索引遍历
// 假设容器vec为{4,3,2,1}
for(int i=0;i
// 3.通过auto遍历
// 假设容器vec为{4,3,2,1}
for(auto ele:vec) {
cout<
3.4 判断指定元素是否存在// 假设vec为{4,3,2,1}
vector::iterator iter=find(vec.begin(),vec.end(),num);
if(iter!=vec.end()) cout<<*iter<
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
本文名称:C++的vector用法详解!!!强大索引,一目了然,分分钟搞定!!!-创新互联
链接URL:http://pwwzsj.com/article/dejsje.html