前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ vector学习笔记

C++ vector学习笔记

作者头像
LRainner
发布2020-07-17 11:32:42
7680
发布2020-07-17 11:32:42
举报
文章被收录于专栏:安全学习笔记安全学习笔记

vector

vector是表示可变大小数组的序列容器,即动态顺序表

像数组一样,vector也采用连续得到存储空间来存储元素,可以使用下标访问

又不像数组,vector大小可以动态改变,而且大小会被容器自动处理

初始化

代码语言:javascript
复制
#include<iostream>
#include<vector>
using namespace std;
int main()
{
        vector<int>v{ 0,1,2,3,4,5,6,7 };  //0 1 2 3 4 5 6 7
        //从数组中获得初始值

        vector<int> v1(10);  //
        //定义了10个整型元素的向量
        //尖括号为元素类型名,没有给初始值

        vector<int>v2(10, 1);  //1 1 1 1 1 1 1 1 1 1
        //定义了10个整型元素的向量,且初始值为1

        vector<int>v3(v);  //0 1 2 3 4 5 6 7
        //用v向量来创建v3,使v3和v一样

        vector<int>v4(v.begin(), v.begin()+3);  //0 1 2
        //基于迭代器的初始化,左闭右开
}

非更易型操作(Nonmodifying Operating)

不改变容器内元素的操作

代码语言:javascript
复制
#include<iostream>
#include<vector>
using namespace std;
int main()
{
        vector<int>a{ 1,2,3,4,5 };

        cout << a.size() << endl;  //5
        //返回当前元素个数

        cout << a.empty() << endl;  //0
        //判空,相当于size()==0

        cout << a.capacity() << endl;  //5
        //返回容器当前最大容量

        a.reserve(100);  //若容量不足,则扩容为100
        cout << a.size() << endl;  //5
        cout << a.capacity() << endl;  //100

        a.shrink_to_fit();  //降低容量,使capacity()=size()
        cout << a.capacity() << endl;  //5
}

赋值操作

代码语言:javascript
复制
#include<iostream>
#include<vector>
using namespace std;
int main()
{
        vector<int>b{ 1,2,3,4,5 };
        vector<int>c;

        c = b;  //1 2 3 4 5
        //将b的全部元素赋值给c

        c.assign(5, 1);  //1 1 1 1 1
        //给c赋值5个1

        c.assign(b.begin(), b.end()-1);  //1 2 3 4
        //基于迭代器的赋值,左闭右开

        c.swap(b);  //b:1 2 3 4   c:1 2 3 4 5
        //置换b,c的数据

        swap(b, c);  //b:1 2 3 4 5   c:1 2 3 4
        //置换b,c的数据
}

元素访问

只有at()会检查边界,若越界,抛出 out_of_range 异常

代码语言:javascript
复制
#include<iostream>
#include<vector>
using namespace std;
int main()
{
        vector<int>d{ 0,1,2,3,4,5 };

        cout << d[2] << endl;  //2
        //返回索引所指向的元素

        cout << d.at(2) << endl;  //2
        //返回索引所指向元素,会进行边界检查

        cout << d.front() << endl;  //0
        //返回第一个元素

        cout << d.back() << endl;  //5
        //返回最后一个元素
}

插入和移除

代码语言:javascript
复制
#include<iostream>
#include<vector>
using namespace std;
int main()
{
        vector<int>e{ 1,2,3 };

        e.push_back(4);  //1 2 3 4
        //在末尾添加元素 4

        e.pop_back();  //1 2 3
        //移除末尾元素,不返回该元素

        e.insert(e.begin()+1, 2);  //1 2 2 3
        //在begin()+1位置插入2

        e.insert(e.begin() + 1, 3, 5);  //1 5 5 5 2 2 3
        //在begin()+1位置插入3个5

        e.insert(e.begin(), e.begin(), e.begin() + 2);  //1 5 1 5 5 5 2 2 3
        //在begin()位置插入前两个元素

        e.erase(e.begin()+1);  //1 1 5 5 5 2 2 3
        //移除begin()+1位置的元素,返回下一个元素的位置

        e.erase(e.begin() + 1, e.begin() + 6);  //1 2 3
        //移除begin()+1到begin()+6所指向的元素,左闭右开,返回下一个元素的位置

        e.clear();  //清空
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白也编程 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 不改变容器内元素的操作
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档