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。无论我试图投入什么价值。为什么会这样呢?
答案 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);