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相等,当且仅当在相同的位置具有相同的值
如果您觉得内容有帮助,请点个赞!