首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C++ STL容器之vector容器快速入门

C++ STL容器之vector容器快速入门

作者头像
可定
发布2020-04-20 14:59:50
发布2020-04-20 14:59:50
1K00
代码可运行
举报
文章被收录于专栏:细嗅蔷薇细嗅蔷薇
运行总次数:0
代码可运行

vector:长度可变数组,即“长度根据需要而自动改变的数组”。

使用vector需于代码头部添加#include<vector>,并且随后加上一句:using namespace std;即可。

vector的定义

vector<type> name;

其中type可为任何基本类型(如int等)、结构体和STL标准容器。

注意:(1)若type也是STL容器(STL容器嵌套),则需要在>>后加上空格(C++11之前标准的编译会将其视为移位操作)。即vector<vector<int>> name;。此时可把vector理解成两个维度都可变的二维数组理解。

vector数组的定义

vector<int> vi[100];

这样vi0到vi100中每一个vector都是一个vector容器。

vector<vector<int>> name;不同的是:这种数组是一维长度为100,另一维长度可变的二维数组。

vector容器内元素的访问

(1)通过下标访问(从0到name.size()-1进行访问,直接访问nameindex即可。
(2)通过迭代器(类似指针)访问

定义:vector<typename>::iterator it;

代码:

代码语言:javascript
代码运行次数:0
运行
复制
#include<stdio.h>
#include<vector>
using namespace std;
int main(){
    vector<int> vi;
    for(int i = 1; i <= 5; i++){
        vi.push_back(i);  //依次在vi的末尾添加5个元素,即1、2、3、4、5
        //push_back(x)会在vector后添加一个元素x,时间复杂度为O(1)
    }
    vector<int>::iterator it = vi.begin();
    //vi.begin()为取vi的首元素地址,而it指向此首元素地址
    //遍历元素
    for(int i = 0; i < 5; i++){
        printf("%d ",*(it + i));  //输出vi[i],即vi[i]和*(vi.begin()+i)是等价的
        //只有vector和string中,才允许使用迭代器加上整数这种写法
    }
    //遍历元素
    for(vector<int>::iterator it = vi.begin(); it != vi.end(); it++){
        //vector的迭代器不支持it < vi.end(),因此使用it != vi.end()
        //迭代器it还支持自加和自减各两种操作
        //end()取尾元素地址的下一个地址,即左闭右开
        //end()作为迭代器末尾标志,不存储任何元素
        printf("%d ",*it);
    }
    printf("%d\n",vi.size());  //计算vi的长度,输出5,时间复杂度为O(1)
    vi.pop_back();  //删除vi的尾元素5,时间复杂度为O(1)
    vi.insert(vi.begin()+2,-1);//将-1插入vi[2]的位置,时间复杂度为O(N)
    vi.erase(vi.begin()+3); //输出1、2、-1、4
    vi.erase(vi.begin()+1,vi.begin()+4);//删除vi[1]、vi[2]、vi[3]
    vi.clear();//清空vector中的所有元素,,时间复杂度为O(N)
}

常见用途

1 存储数据

(1)vector可以作为数组使用,而且在一些元素个数不确定的场合可以节省空间。

(2)若需要根据一些条件把部分数据输出在同一行,数据中间用空间隔开。由于在其当中输出数据个数不确定,为了使最后一个满足条件的数据后面不输出额外的空格。

可以先用vector记录所有需要输出的数据,然后一次性输出。

2 用邻接表存储图

版权所有:可定博客 © WNAG.COM.CN

本文标题:《C++ STL容器之vector容器快速入门》

本文链接:https://cloud.tencent.com/developer/article/1616893

特别声明:除特别标注,本站文章均为原创,本站文章原则上禁止转载,如确实要转载,请电联:wangyeuuu@qq.com,尊重他人劳动成果,谢过~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • vector的定义
  • vector数组的定义
  • vector容器内元素的访问
    • (1)通过下标访问(从0到name.size()-1进行访问,直接访问nameindex即可。
    • (2)通过迭代器(类似指针)访问
  • 常见用途
    • 1 存储数据
    • 2 用邻接表存储图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档