Итак, я сделал двумерный массив символов, но каждый раз, когда я пытаюсь получить к нему доступ, я получаю ошибку сегментации, и я не могу понять, почему.
std::vector<std::vector<char>> matrix_;
//Filling it with space ' ' characters
std::vector<char> aRow;
matrix_.resize(height_, aRow);
for (std::vector<char> row : matrix_) {
row.resize(width_, ' ');
}
std::cout << matrix_[0][0]; //Segmentation fault here
for (auto&& row : matrix_)
и сэкономьте время на наборе текста.
Используйте auto&& row : matrix_
(обратите внимание на добавленную ссылку) в for
, чтобы получить ссылку на каждую строку, которую вы ищете.
Как у вас есть, он создает копию, изменяет ее размер и отбрасывает результат.
Не будучи слишком пессимистичным, вы также можете изменить размер каждого столбца с помощью строки нужного размера. Цикл for
не нужен.
std::vector<char> aRow(width_, ‘ ‘);
matrix_.resize(height_, aRow);
Ах, я вижу, где ошибка. Спасибо! Но почему && вместо & ?
Я новичок, поэтому я бы хотел пока избегать auto, пока лучше не разберусь с типами. Но с помощью одного и работает! Спасибо!
std::vector<char> aRow; aRow.resize(width_, ‘ ‘);
можно упростить до std::vector<char> aRow(width_, ‘ ‘);
for (std::vector<char> row :
делает копию.