Как создать двухмерный вектор с фиксированной длиной столбца и динамической длиной строки? - PullRequest
0 голосов
/ 16 мая 2019

У меня есть двумерный вектор типа char, подобный этому:

     std::vector< std::vector<char> > Input_Vector ;

Я хочу, чтобы количество строк было неизвестно, а количество столбцов фиксировано. Таким образом, каждая строка вектора будет содержать 3 ячейки.

1 Ответ

1 голос
/ 16 мая 2019

Учитывая, что вы знаете, что строки всегда имеют по 3 ячейки, вы можете использовать std::array<char, 3> в качестве типа элемента. std::array может быть проиндексирован как обычный вектор, но внутри это просто массив в стиле c. Это означает, что нет никаких накладных расходов относительно его использования, и он будет иметь лучшую локальность кэша по сравнению с вектором векторов.

Его также можно создать с помощью списка инициализаторов, например, структуры!

std::vector<std::array<char, 3>> vect;

vect.push_back({'a', 'b', 'c'}); // This works 

char c = vect[0][2]; // gets 'c'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...