заполнение вектора векторов, инициализированных с неопределенными размерами - PullRequest
0 голосов
/ 03 февраля 2019

Я создал двумерный вектор, который заполняется нулями при его инициализации:

std::vector<std::vector<char>> grid(rows, std::vector<char>(cols, '0'));

однако я хотел бы инициализировать его как пустой двумерный вектор с неопределенным размером:

std::vector<std::vector<char>>grid;

и затем заполните его для достижения того же эффекта, что и в первом утверждении.Я не думаю, что смогу использовать fill(), потому что у него нет .begin() или .end(), и я играл с циклами for и push_back безрезультатно, обычно получаю ошибку ошибки сегментации.Я чувствую, что то, что я пытаюсь сделать, должно быть возможным, и если это лучший способ сделать это?Любая помощь будет принята с благодарностью.Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Если вы можете использовать C ++ 11 или выше, вы можете использовать следующую перегрузку std::vector::resize():

void resize( size_type count, const value_type& value );

Для вашего случая это будет:

std::vector<std::vector<char>>grid;

...

grid.resize(rows, std::vector<char>(cols, '0'));
0 голосов
/ 03 февраля 2019

Вы можете сделать это с помощью пары циклов for.

std::vector<std::vector<char>>grid;
for(int i=0; i<rows; i++) {
    vector<char> v;
    for(int j=0; j<cols; j++) {
        char ch;
        cin >> ch;
        v.push_back(ch);
    }
    grid.push_back(v);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...