push_back вектор в другой вектор - PullRequest
5 голосов
/ 07 декабря 2011

Я хочу push_back() вектор M в вектор N.

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int i = -1;
    vector<vector<int> >N,
    vector<int>M;
    int temp;

    while (i++ != 5)
    {
        cin >> temp;
        N.push_back(temp);
    }

    N.push_back(vector<int>M);
    return 0;
}

Ошибка компиляции

Я получаю синтаксическую ошибку.

test.cpp: In function ‘int main()’:
test.cpp:28: error: invalid declarator before ‘M’
test.cpp:34: error: no matching function for call to ‘std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >::push_back(int&)’
/usr/include/c++/4.4/bits/stl_vector.h:733: note: candidates are: void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = std::vector<int, std::allocator<int> >, _Alloc = std::allocator<std::vector<int, std::allocator<int> > >]
test.cpp:37: error: ‘M’ was not declared in this scope
coat@thlgood:~/Algorithm$ 

Ответы [ 4 ]

5 голосов
/ 07 декабря 2011

Эта строка

N.push_back(vector<int>M);

должна быть

N.push_back(M);

Также

vector<vector<int> >N,

должна быть

vector<vector<int> >N;
3 голосов
/ 07 декабря 2011

У вас есть несколько мелких ошибок.

Вы можете решить их, взглянув на каждую полученную ошибку компиляции и подумав, что это значит.Если ошибка не ясна, вы можете посмотреть номер строки ошибки и подумать, что может ее вызвать.

См. Рабочий код:

int main()
{
    int i = -1;
    vector<vector<int> >N;
    vector<int>M;
    int temp;

    while (i++ != 5)
    {
        cin >> temp;
        M.push_back(temp);
    }

    N.push_back(M);
    return 0;
}
3 голосов
/ 07 декабря 2011

Вам нужно

M.push_back(temp);

в цикле while, кроме неверного синтаксиса, указанного в ответе @StilesCrisis.

0 голосов
/ 07 июля 2016
N.insert(N.end(),M.begin(),M.end());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...