C++Primer3.3节标准库类型vector知识点梳理

C++Primer3.3节标准库类型vector知识点梳理

1、标准库类型vector
(1)定义:vector是相同类型的对象的集合;vector通常被称为容器;vector是一个类模板而非类型,由vector生成的类型必须包含vector中元素的类型,如:vector< int >。
(2)使用的前提:包含vector头文件和使用using来声明。如:
#include< vector >
using std::vector;
(3)语法形式:vector< int> vec;
(4)实例化:编译器根据模板创建类或函数的过程。
(5)使用规则:当使用模板时,编译器应利用额外的信息来把类或函数实例化成某种类型。
(6)vector对象:大多数内置类型(除引用类型外)和类类型都可以作为它的类型。
(7)vector对象中的元素:大多数类型的对象都可以作为vector对象中的元素,除了引用外。

2、vector对象的初始化
(1)列表初始化(即直接初始化)。
语法形式:vector< string > vec{“I”,“am”,“a”,“good”,“man”};

(2)拷贝初始化
语法形式:vector< string > vec1=vec;

(3)创建指定数量的元素
语法形式:vector< int > vec(10,-1);

3、默认初始化
(1)通常情况下,可以只提供vector对象容纳的元素数量而略去初始值,此时库会自动给vector所有的元素默认初始化。
(2)这个默认初值由vector对象中的元素的类型决定。
a、当元素的类型是内置类型,如int时,元素初值为0。
b、当元素的类型是某种类型,如string时,元素初值为默认初始化,前提是该类中定义了默认初始化,否则是无法完成初始化的工作的。

4、判断列表初始值还是元素数量
(1)判断依据:初始化的真实含义依赖于传递初始值时用的是花括号还是圆括号。
a、如果用的是圆括号,那么提供的值是用来构造vector对象的。如构造vector对象有多少个元素和元素值。vector< int > (10,-1); //vector对象有10个元素,它们的值都是-1.
b、如果用的是花括号,若花括号的值与元素的类型相同,那么是列表初始化。如:vector< string > {“i”,“am”,“a”,“good”,“man”};
c、如果用的是花括号,若花括号中的值与元素的类型不同,那么提供的值不能用列表初始化vector对象,所以只能构造vector对象。如vector< string > {10,“good”};

5、 向vector对象中添加元素
(1)方式:先创建一个空的vector对象,然后再使用vector的成员函数push_back向其中添加元素。
(2)push_back函数的作用:负责把一个vector对象的元素压到vector对象的最后一个元素。
(3)注意事项:如果循环体内部包含有向vector对象添加元素的语句,则不能使用范围for语句。因为范围for语句体内不应改变其所遍历序列的大小,如添加元素会改变序列的大小。

6、其他vector操作
(1)vector的大多数操作都与string的操作相同。比如empty和size函数。
(2)访问vector对象的元素的方法,就是通过访问元素在vector对象中的位置。如
a、for(auto i:vec) {cout<<i<<endl;}
b、for(auto &j:vec) { j+=j;}
(3)两个vector对象的比较同string类型相同。
(4)通过计算vector内对象的索引,然后直接获取索引位置上的元素。
(5)注意事项:
a、不能使用下标形式添加元素。
b、只能对确已知存在的元素执行下标操作,如不能对空vector对象执行下标操作。

猜你喜欢

转载自blog.csdn.net/qq_47466050/article/details/106528688