对 vector 对象来说,直接初始化的方式适用于三种情况:
(1)初始值已知且数量较少;(2)初始值是另一个 vector 对象的副本;(3)所以元素的初始值都一样。
然而更常见的情况是:创建一个 vector 对象时并不清楚实际所需的元素个数,元素的值也经常无法确定。还有些时候即使元素的初值已知,但如果这些值总量较大而各不相同,那么在创建 vector 对象的时候执行初始化操作也会显得过于繁琐。
当初始化元素比较多的时候,更好的方法是先创建一个空 vector ,然后在运行时再利用 vector 的成员函数 push_back 向其中添加元素。push_back 负责把一个值当成 vector 对象的尾元素“压到(push)” vector 对象的“尾端(back)”。
例如:
vector<int> v2; // 空 vector 对象
for (int i = 0; i != 100; ++i)
v2.push_back(i); // 依次把整数值放到 v2 尾端
// 循环结束后 v2 有100个元素,值从0到99
例如,有时需要实时读入数据然后将其赋予 vector 对象:
// 从标准输入中读取单词,将其作为 vector 对象的元素存储
string word;
vector<string> text; // 空 vector 对象
while (cin >> word) {
text.push_back(word); // 把 word 添加到 text 后面
}
本例也是先创建一个空 vector ,之后依次读入未知数量的值并保存到 text 中。