正文: 在C++中,vector是一种非常常用的容器,可以方便地存储和操作一组数据。本文将详细介绍vector容器的定义、初始化方式以及一些常见操作。
1、vector类型简介:
vector是标准库中的容器,可以将其他对象装入其中。在使用vector之前,需要包含头文件要用头文件#include<vector>。vector本身是一个类模板,通过在vector后添加一对<>,内部放置类型信息,可以实例化一个完整的类类型。
示例:
vector<int> vjihe; // 定义一个保存int类型数据的vector对象 vector<student> studlist; // 定义一个保存student类型数据的vector对象 vector<vector<string>> strchuan; // 定义一个保存vector<string>类型数据的vector对象
vector 当成类型(残缺类类型) vector<int> : 在vector之后加一对<>,<>内部放上类型信息。(这才是一个完整的 类 类型) vector<student>studlist; vector<vector<string>>strchuan;//可以,该集合里面每一个元素又是一个vector<string>对象;集合套集合
注意:vector不能装引用类型,因为引用是别名而不是对象。
不能装引用类型: vector<int &>vjihe;//引用是个别名,不是对象,不是对象不能往vector里面放
2、定义和初始化vector对象:
a) 空vector: 通过不传递任何参数,创建一个空的vector对象,此时vector中不包含任何元素。
示例:
vector<string> mystr; // 创建一个空的string类型的vector对象 mystr.push_back("abcde"); mystr.push_back("fg"); cout << mystr[0] << endl; // 输出abcde cout << mystr[1] << endl; // 输出fg
b) 元素拷贝的初始化方式: 可以通过将一个vector对象的元素拷贝给另一个vector对象来初始化。
示例:
vector<string> mystr2(mystr); // 将mystr的元素拷贝给mystr2 vector<string> mystr3 = mystr; // 将mystr的元素拷贝给mystr3
c) 列表初始化: 在C++标准中,可以使用列表初始化方式给vector赋值,使用{}
括起来。
示例:
vector<string> mystr4 = { "aaaa", "bbb", "ccc" };
d) 创建指定数量的元素: 可以使用(元素数量, 元素值)
的方式创建指定数量的元素,其中元素数量的概念一般使用()
表示。
示例:
vector<int> ijihe(15, -200); // 创建15个int类型的元素,每个元素的值是-200 vector<string> sjihe(5, "hello"); // 创建5个string类型的元素,每个元素的值是hello vector<int>ijihe(20);//20个元素,[0]——[19];每个元素为0; vector<string>sjihe(5);//5个元素,小标0-4,每个元素值为"";
e) 多种初始化方式: ()
一般表示对象中元素数量的概念,{}
一般表示元素内容的概念,但并不是绝对的规定。
示例:
vector<int> i1(10); // 表示10个元素,每个元素值是缺省的0 vector<int> i2{ 10 }; // 表示一个元素,这个元素的值是10 vector<string> s1{ "hello" }; // 表示一个元素,内容是hello vector<string> s2{ 10 }; // 表示10个元素,每个元素都为"" vector<string> s3{ 10, "hello" }; // 表示10个元素,每个元素的内容都是hello vector<int> i3(10, 1); // 表示10个元素,每个元素的值为1 vector<int> i4{ 10, 1 }; // 表示两个元素,第一个元素为10,第二个元素为1
注意:使用{}
进行初始化时,{}
中的值的类型必须与<>
中的类型相同。
vector<int>i5{"hello"};//语法错误。