模板类vector和array是数组的替代品
4.10.1 模板类vector
-
vector类似于string,是一种动态数组
-
使用vector要包含头文件:
# include <vector>
-
vector包含在命名空间std中
-
声明创建一个名为vt的vector对象
vector<typeName> vt(n_elem);//可存储n_elem个类型为typeName的元素
4.10.2 模板类array(c++11)
-
vector的功能比数组强大,但效率低;
-
头文件&命名空间
# include <array> using namespace std;
-
array对象的长度是固定的,也使用栈(静态内存分配),而不是自由存储区,因此效率与数组相同,但更安全
-
创建对象:
array<typeName,n_elem> arr;//create array object of n_elem typeName
注意:与vector不同,n_elem不能为变量
-
array可以将一个array对象赋值给另一个array对象,数组则必须逐个元素复制
-
越界
arr[-2] = .5; //被允许的,不会检查这种越界错误
也可以使用vector和array的成员函数at()
arr.at(1) = 2.3; //assign 2.3 to a2[1]
中括号表示法和成员函数at()的区别:使用at会在运行期间捕获非法索引