1. vector<int> ivec;
ivec[0]=42; //错误。因为ivec是空的vector对象,其中不含任何元素,而下标只能用于获取已存在的元素。
更正:将赋值语句改为语句ivec.push_back(42)
2. 列出三种定义 vector 对象的方法,给定 10 个元素,每个元素值为 42。指出是否还有更好的实现方法,并说明为什么。
方法一:方法二:vector<int> ivec(10, 42);
方法三:vector<int> ivec(10);
for (ix = 0; ix < 10; ++ix)
ivec[ix] = 42;
方法四:vector<int> ivec(10);
for (vector<int>::iterator iter = ivec.begin();
iter != ivec.end(); ++iter)
*iter = 42;
方法五:vector<int> ivec;
for (cnt = 1; cnt <= 10; ++cnt)
ivec.push_back(42);
vector<int> ivec;
vector<int>::iterator iter = ivec.end();
for (int i = 0; i != 10; ++i) {
ivec.insert(iter, 42);
iter = ivec.end();
}
各种方法都可达到目的,也许最后两种方法更好一些。它们使用标准库中定义
的容器操作在容器中增添元素,无需在定义 vector 对象时指定容器的大小,比
较灵活而且不容易出错。