2016-11-18 68 views
-4
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只在向量「b」中插入0,不管我嘗試放入什麼值。爲什麼這樣呢?向量push_back僅插入0s

回答

0

您的問題並不完整,因爲我不確定您傳遞給代碼的什麼值以及您得到的輸出。但是,我應該提到,當您使用vector<int> b(n)構造b時,它將構建一個大小爲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); 
+0

然後什麼都可以完成從索引0推新元素? –

+1

@grigor我爲他的問題添加了必要的代碼,請不要介意我的操作 – Danh