向量的 C++ 输出元素不是预期的

C++ output elements of a vector not expected

我正在练习 vector 和 ranged for 循环,我的代码:

#include <iostream>
#include <vector>
using namespace std;

int main(){
    int size,element;
    cout<<"enter vector size: ";
    cin>>size;
    vector<int>v(size);
    for(int i=0; i<size; i++){
        cout<<i<<"\t";
        cin>>element;
        v.push_back(element);
    }
    for(int p : v) cout<<p<<" ";
}

我输入了 3,然后是 1、2、3,但输出是“0 0 0 1 2 3”。你能解释一下0是从哪里来的吗?非常感谢!

vector<int>v(size); 创建一个 size 零初始化元素的向量(在你的例子中是 3)。 push_back 然后将新元素添加到此向量的末尾,这解释了您获得的结果。

您可以为带有 reserve 的向量中的元素保留 space。如果您事先知道要添加多少元素,这会稍微加快速度。

vector<int>v(size);

这将创建一个大小等于大小变量的向量。现在,如果您执行 push_back ,它将创建一个新向量并使用 size+1 并将元素添加到其中。 而不是在 for 循环中做 cin>>v[i];