如果我在std::vector
循环中增加for
的大小,当它是for
循环的参数时,它会起作用吗? for
循环会在每次迭代时重新计算向量的大小吗?
示例:
for(int i=0; i<myVector.size(); i++)
{
myVector.push_back(new element);
}
由于
答案 0 :(得分:5)
是的,myVector.size()
将在每次迭代时重新评估,每次都返回一个更大的值。因此,你的循环永远不会结束,因为它就像一条狗追逐自己的尾巴(假设初始大小不为零)。
如果您想将向量中的元素数量加倍,则需要预先存储myVector.size()
,并在循环中使用存储的值,如下所示:
size_t origSize = myVector.size();
for(int i=0; i<origSize; i++)
{
myVector.push_back(new element);
}
答案 1 :(得分:0)
每次迭代都会重新计算for循环中的条件。因此,示例代码永远不会终止,因为大小会不断重新计算,i
永远不会赶上。