C++ 向量vector介绍

Vector是标准库类型中的一种,标准库类型还有常见的string。下文主要介绍vector。

主要内容有:

一、什么是vector

二、如何初始化vector

三、怎么向vector中添加元素

四、vector的其他操作

一、什么是vector

C++语言中既有类模板,也有函数模板,其中vector是一个类模板。既然是一个类模板,那么在实例化vector时需要指明实例化成何种类型。例如可以实例化成:int类型的对象,float类型对象,或者自定义类(class)对象(如Student类)。

//在使用vector时,需要包含如下头文件
#include<vector>            
using std::vector;          //声明 vector的命名空间是std 此处操作符(::)的含义是编译器应该从操作符:: 左侧中寻找右侧vector的名字。

//下面举例vector可以实例化成不同的类型
vector<int> ivec;            //ivec 保存int类型对象
vector<float> fvec;         //fvec 保存float类型对象
vector<Student> Student_vec  //Student_vect 保存Student类型对象,Student是用户自己定义的类

二、如何初始化vector

初始化vector的方法可以分为:值初始化、列表初始化、拷贝初始化

1.值初始化:

//ivec实例化成int类型,一共有10个元素,每个元素都是0(默认是0)
vector<int> ivec(10);                

//ivec实例化成int类型,一共有10个元素,每个元素都是-1
vector<int> ivec(10,-1);             

//svec实例化成string类型,一共有5个元素,每个都是空string对象
vector<string> svec(5);    

//svec实例化成string类型,一共有5个元素,每个都初始化成"yes"          
vector<string> svec(5,"yes")         

//下面进行错误的值初始化示范:
vector<int> vect = 10;               //这里本意是想令vector初始化为10,却错误使用了拷贝赋值的方式。正确为vect(1,10)

 2.列表初始化

//下述vector包含三个元素分别是"hello","world","!"
vector<string> svec{"hello","world","!"};

//下述vector包含两个元素分别是10和1,注意与vector<int> ivec(10,1);相区别,后者是含有10个元素且都为1
vector<int> ivec{10,1};

//下述vector包含五个元素分别是1,2,3,4,5
vector<int> ivec{1,2,3,4,5};

3.拷贝初始化

vector<int> ivec;                        //初始状态为空

vector<int> ivec2(ivec);                 //把ivec的元素拷贝给 ivec2

vector<int> ivec3 = ivec;                //把ivec的元素拷贝给 ivec3

vecotr<string> svec(ivec);               //错误,ivec的元素是int类型,svec是string类型,不同类型不能拷贝

 

vector更多时候是初始化为一个空的vector,然后再根据需求动态添加值,这样才算是完美的运用了vector动态添加元素的特性。相比之下,创建一个数组需要确定数组的大小,当数组填满时再去扩充空间就很麻烦,但是vector却可以自动扩充空间

 

三、如何向vector中添加元素

下面的例子阐述了vector最常见的操作,先初始化vector为一个空对象,然后再去根据需求添加元素(可以是任意数量元素)

vector<int> ivec;         //空vector对象
for (int i=0;i!=100;i++)
    ivec.push_back(i);    //依次把整数值放到v2尾端
//最终ivec 包含0到99,共一百个元素,体现了不需要定义ivec大小,需要多少元素就加多少元素

四、vector的其他操作

vector的其他操作包括判断vector是否为空vector的元素个数vector取值vector之间比较

vector<int> v;             //初始化一个v,不包含元素
v.empty()                  //判断vector是否为空,若不包含任何元素就返回ture,否则false
v.size()                   //返回v中元素个数
v.push_back(k)             //向v的尾端添加一个值为k的元素
v[n]                       //v中第n个元素的值
v = v2                     //用v2的元素覆盖v的元素
v = {a,b,c,...}            //用列表中的元素拷贝替换v的元素
v == v2                    //v和v2相等,当且仅当在相同的位置具有相同的值

                

如果您觉得内容有帮助,请点个赞!

 

 

 

 

 

 

 

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值