синтаксическая ошибка с вектором векторов

Я прочитал статью Инициализация вектора векторов, имеющих фиксированный размер с бустом что должно точно соответствовать моим требованиям: инициализировать матричный вектор вектора, который может быть произвольно расширен в обоих направлениях (я хочу использовать его для извлечения и группировки выбора значений из большего списка).

Однако решение, данное в первых 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

-1

Решение

Здесь я угадаю, что вы забыли сообщить нам, что пытаетесь объявить элемент данных для класса. Итак, вы действительно пытаетесь скомпилировать что-то вроде:

struct A {
vector <vector <int> > v(10, vector <int>(10,1));
};

а также

struct A {
vector <vector<int> > v = vector <vector<int> >(1, vector<int>(1, 0));
};

Член данных может быть инициализирован только в определении класса знаком равенства или фигурными скобками. Инициализация с круглыми скобками не допускается.

Пытаться:

struct A {
vector<vector<int>> v{10, vector<int>(10,1)};
};

В любом случае вам нужен как минимум C ++ 11 для инициализации фигурной скобки, а также инициализация нестатического члена в объявлении (ваша вторая ошибка, где вы используете равенства вместо скобок, но со старым стандартом C ++).

0

Другие решения

Других решений пока нет …