2016-11-18 2 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 только вставляет 0s в вектор «b» no mater какое значение я пытаюсь вставить. почему это так?Vector push_back inserting 0s only

ответ

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); 
+0

Тогда что может быть сделано, чтобы вытолкнуть новые элементы из индекса 0? –

+1

@grigor Я добавил необходимый код для его вопроса, пожалуйста, не возражайте против моего действия – Danh

Смежные вопросы