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

use*_*096 -1 c++ vector

我创建了一个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);

    }
}
Run Code Online (Sandbox Code Playgroud)

nne*_*neo 5

你经常打电话push_back,改变size.

如果您打算填充这样的矢量,您可以简单地执行以下操作:

vector<int> u;
for(size_t x = 0; x < 3; x++) {
    u.push_back(x);
}
Run Code Online (Sandbox Code Playgroud)

或者,或者,

vector<int> u(3); // the constructor fills the vector with 3 default-initialized elements
for(size_t x = 0; x < u.size(); x++) {
    u[x] = x;
}
Run Code Online (Sandbox Code Playgroud)