向量大小在for循环中创建问题

瑞安

我创建了一个类型为int的向量,并为该向量显式声明了3的大小。假设for循环一直循环到x等于或大于3。不幸的是,for循环一直运行第3遍。有人能详细说明为什么会发生这种情况吗?我要刺一下,说是“ u.size”造成了问题,但是如果我为向量声明了一个大小,那会是为什么呢?

#include<iostream>
#include<vector>

using namespace std;
int main()
{
    vector<int> u (3);

    for(size_t x = 0; x < u.size();x++)
    {
        int g = x;
        u.push_back(g);

    }
}
Matteo意大利

push_back 在向量的末尾附加一个元素,因此其大小会不断扩大。for循环的退出条件在每次迭代时进行评估,因此循环永远不会终止,因为向量在每次迭代时增长1个元素。

您可以这样做:

vector<int> u;
for(int i=0; i<3; ++i)
    u.push_back(i);

允许向量自行扩展,或者从头开始创建正确大小的向量,然后将元素存储在其相应位置:

vector<int> u(3);
for(size_t i=0; i<u.size(); ++i)
    u[i]=i;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章