在for循环中增加向量的大小

Noo*_*eer 2 c++ for-loop vector

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

例:

for(int i=0; i<myVector.size(); i++)
{
   myVector.push_back(new element);
}
Run Code Online (Sandbox Code Playgroud)

谢谢

das*_*ght 5

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

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

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