为什么以下代码块会重复打印“40”,
vector<Square> array(81);
char c;
int d;
int i = 0;
for(c='A'; c<'J'; c=c+1)
for(d=1; d<10; d++)
array.push_back( Square(c, d));
for(int i = 0; i<81; i++)
cout << array[i].column << array[i].row << endl;
}
然而打印出来,A1,A2,A3,....,I9
vector<Square> array(81);
char c;
int d;
int i = 0;
for(c='A'; c<'J'; c=c+1)
for(d=1; d<10; d++)
array[i++] = ( Square(c, d));
for(i = 0; i<81; i++)
cout << array[i].column << array[i].row << endl;
}
推回是否将它放在必须通过迭代器访问的随机存储器中?在浏览向量时总是使用迭代器会更好吗?
答案 0 :(得分:8)
vector<Square> array(81);
声明一个包含81个元素的向量。当您push_back
时,插入新元素,即使用的大小将增加到82,83,...并且您现有的元素将保持不变。
所以 - 在您的第一个代码段中,您可以在任何vector
之前打印出push_back
中的元素。第二个片段将元素替换为您想要的元素。
答案 1 :(得分:2)
每次使用push_back
时,都会在矢量末尾附加创建 new 元素。
如果您希望第一个代码示例正常工作,则应避免设置矢量大小,并将其声明为vector<square> array;