增加 for 循环中矢量的大小

Increasing the size of a vector in for loop

本文关键字:for 循环 增加      更新时间:2023-10-16

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

例:

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

谢谢

是的,myVector.size()将在每次迭代时重新计算,每次返回更大的值。因此,你的循环永远不会结束,因为它就像一只狗追逐自己的尾巴(假设初始大小不为零)。

如果你想将向量中的元素数量加倍,你需要预先存储myVector.size(),并在循环中使用存储的值,如下所示:

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

for 循环中的条件在每次迭代时都会重新计算。因此,示例代码永远不会终止,因为大小将不断重新计算,i永远不会赶上。