Я прочитал статью Инициализация вектора векторов, имеющих фиксированный размер, с назначением форсирования , который должен точно соответствовать моим требованиям: инициализация матричного вектора, который можно произвольно расширить в обоих направлениях (Я хочу использовать его для извлечения и группировки выбора значений из большего списка).
Однако решение, данное в первых 2 ответах
vector<vector<int>> v(10, vector<int>(10,1));
, вызывает синтаксическую ошибку вмой CDT_eclipse и следующая ошибка от моего компилятора:
error: expected identifier before numeric constant
vector <vector <int> > v(10, vector <int>(10,1));
-
Версия, найденная в векторно-специфическом синтаксисе , работает для моего затмения:
vector<vector<int>> v = vector<vector<int>>(n, vector<int>(n, 0));
Однако, мой компилятор выдает предупреждение:
vector warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [...]
Изменение версии компилятора (gcc 5.4.0 20160609 для Ubuntu 5.4.0-6ubuntu1 ~ 16.04.10) невозможнов большой схеме, где мой код должен использоваться.Поэтому мне нужна совместимая формулировка упомянутой выше команды.Большое спасибо!
РЕДАКТИРОВАТЬ: две мои основные попытки выглядели так:
vector <vector <int> > v(10, vector <int>(10,1)); --> syntax error
vector <vector<int> > v = vector <vector<int> >(1, vector<int>(1, 0)); --> compiler error