增加for循环中向量的大小

时间:2016-02-18 03:34:59

标签: c++ for-loop vector

如果我在std::vector循环中增加for的大小,当它是for循环的参数时,它会起作用吗? for循环会在每次迭代时重新计算向量的大小吗?

示例:

for(int i=0; i<myVector.size(); i++)
{
   myVector.push_back(new element);
}

由于

2 个答案:

答案 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永远不会赶上。