vector 容器
需要包含头文件#include<vector>
vector<T>;
,T 表示容器中潜在元素对象的类型(也就是所容纳对象的类类型)
- 初始化操作
-
列表初始化
vector<string> v1{"a","an","the"};
,只能使用花括号,不能使用圆括号 -
值初始化
vector<int> v1(10);
,表示用 10 个 int 类型的元素
初始值,由容纳的类类型决定(默认初始化)
对于不存在默认初始化的类,必须提供初始值 -
列表初始化和元素数量
辨析{}和()
()中提供的值是用来构造 vector 对象的,元素数量
{}总是尽可能按照列表初始化来处理提供的值,只有在不能进行列表初始化时才用来构造对象void test() { vector<int> v1(10, 1); // 10个1 for (auto it = v1.begin(); it != v1.end(); it++) { cout << *it << " "; } vector<int> v2{10, 1}; //两个对象,一个10,一个1 for (auto it = v2.begin(); it != v2.end(); it++) { cout << *it << " "; } }
-
向容器中添加元素
-
vector 对象能高效增长
可以看作动态数组,只管使用即可,容量的问题无需关心 -
push_back
添加元素
功能:把一个值当作 vector 对象的尾元素压入到尾部
如果循环体内有向 vector 对象中添加元素的操作,则不能使用范围 for 循环(end()值改变),与迭代器失效同一个道理 -
其他操作
与 string 对象相似,size()、empty()等
遍历循环的方式也与 string 对象相似
在进行比较操作时,只有当元素可以比较时(重载),vector 对象才能进行比较 -
下标运算符不能用于添加元素
vector<int> v1; v1[0] = 10; //错误,不能通过下标运算符添加对象 v1.push_back(10); v1.push_back(20); v1.push_back(30); cout << v1[0] << endl; //可以访问已存在的对象
-