4.2.6 向量的索引
接下来,程序显示了主人公的全部物品。
- cout << "\nYour items:\n";
- for (unsigned int i = 0; i < inventory.size(); ++i)
- {
- cout << inventory[i] << endl;
- }
正如数组一样,可以通过下标运算符对向量进行索引。实际上,上面的代码和原始Hero's Inventory程序中的代码几乎一模一样。唯一的区别在于,此处使用inventory.size()来指定循环终止的时刻。注意,循环变量i是unsigned int型,因为size()的返回值是无符号整型。
接下来,程序替换了主人公的第一个物品。
- inventory[0] = "battle axe";
还是和数组一样,此处使用下标运算符为已存在元素的位置赋予新的值。
陷阱
尽管向量是动态的,但不可以使用下标运算符增加向量的大小。例如,下面的代码非常危险,并且无法增加向量inventory的大小:
- vector<string> inventory; //creating an empty vector
- inventory[0] = "sword"; //may cause your program to crash!
正如数组一样,可以尝试访问不存在的元素位置,但这有潜在的灾难性后果。上面的代码更改了计算机内存中的某个未知部分,可能导致程序崩溃。如果要在向量的最后添加新元素,请使用push_back()成员函数。