1.列表初始化vector对象
C++11新标准提供了一种为vector对象的元素赋初值的方法,即列表初始化。如果提供的是初始元素的列表,则只能把初始值都放在花括号里进行列表初始化,而不能放在圆括号里。
vector<string> v1{"a","an","the"};
2.列表初始化还是元素数量
基本原则:
如果用的是圆括号,可以说提供的值是用来构造vector对象的;
如果用的是花括号,可以说我们想列表初始化该vector对象。
vector<int> v1(10);//v1有10个元素,每个的值都是0
vector<int> v2{10};//v2有1个元素,该元素的值是10
vector<int> v3(10,1);//v3有10个元素,每个的值都是1
vector<int> v4{10,1};//v4有2个元素,值分别是10和1
如果初始化时使用了花括号的形式但是提供的值又不能用来列表初始化,就要考虑用这样的值来构造vector对象了。想要列表初始化vector对象,花括号里的值必须与元素类型相同。确认无法执行列表初始化之后,编译器会尝试用默认值初始化vector对象。
vector<string> v7{10};//v7有10个默认初始值的元素
vector<string> v8{10,"hi"};//v8有10个值为"hi"的元素
3.其他vector操作
格式 | vector支持的操作 |
---|---|
v.empty() | 如果v不含任何元素,返回真;否则返回假 |
v.size() | 返回v中元素的个数 |
v.push_back(t) | 向v的尾端添加一个值为t的元素 |
v[n] | 返回v中第n个位置上元素的引用 |
v1 = v2 | 用v2中元素的拷贝替换v1中的元素 |
v1 = {a,b,c...} | 用列表中元素的拷贝替换v1中的元素 |
v1 == v2 | v1和v2相等当且仅当元素数量相同且对应位置的元素值都相同 |
v1 != v2 | |
<, <=, >, >= | 以字典顺序进行比较 |
4.不能用下标形式添加元素
vector对象(以及string对象)的下标运算符可用于访问已存在的元素,而不能用于添加元素。
确保下标合法的一种有效手段就是尽可能使用范围for语句。