矢量push_back仅插入0

时间:2016-11-18 04:42:55

标签: c++ vector push-back

int main()
 {

    long int n;
    long int k;
    long int q;
    long int o;
    long int temp;

    cin >> n >> k >> q;
    vector<int> a(n);
    vector<int> b(n);
    for( int a_i = 0;a_i < n;a_i++){
       cin >> a[a_i];
    }   

    for(long int j=k;j>0;j--) {
        b.push_back  (a[n-j]);        
    }

    for(long int r = 0;r<n-k;r++)
        b.push_back(4);    

    for(long int a0 = 0; a0 < q; a0++){
        long int m;
        cin >> m;
        cout<<b[m]<<endl;
    }
    return 0;
}

问题:在这段代码中,push_back只在向量&#34; b&#34;中插入0。无论我试图投入什么价值。为什么会这样呢?

1 个答案:

答案 0 :(得分:0)

我的问题并不完整,因为我不确定您传递给代码的价值以及您获得的输出。但是,我应该提一下,当您使用b构建vector<int> b(n)时,它将构造一个大小为n且全0的向量。然后push_back会向其添加元素,但如果您打印任何第一个n元素,它们都将为0。

您需要替换

vector<int> a(n);
vector<int> b(n);

vector<int> a;
a.reserve(n);
vector<int> b;
b.reserve(n);