资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

C++的vector用法详解!!!强大索引,一目了然,分分钟搞定!!!-创新互联

新手创作中,欢迎在评论区指教~
如果该文章对你确有帮助,希望可以点个赞,让我元气满满~
持续更新中,点击关注不迷路~
话不多说,直接上代码!!!

创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站设计、网站制作、河津网络推广、微信小程序开发、河津网络营销、河津企业策划、河津品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联为所有大学生创业者提供河津建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com1 初始化 1.1 一维
#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用法详解!!!强大索引,一目了然,分分钟搞定!!!-创新互联
文章位置:http://cdkjz.cn/article/dejsje.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220