У меня есть двумерный статический вектор (std::vector< std::vector<double> >
), который необходимо заполнить, и я работаю над старым проектом, который необходимо скомпилировать с использованием C ++ 98. Поэтому я не могу использовать синтаксис std::vector<...> v = { {1,2}, {3,4} };
.
Для одномерных векторов назначение массива как double a[] = {1,2};
, а затем использование std::vector<double> v(a, a+2)
делает свое дело; однако, это не работает для двухмерных векторов.
std::vector< std::vector<double> >
x1_step_lw_2(__x1_step_lw_2,
__x1_step_lw_2 + ARRAY_SIZE(__x1_step_lw_2));
Я получаю следующую ошибку:
../src/energyConsumption/ue-eennlite-model-param-7IN-30NN.cpp:193:33: required from here
/usr/include/c++/4.8/bits/stl_construct.h:83:7: error: invalid conversion from ‘const double*’ to ‘std::vector<double>::size_type {aka long \
unsigned int}’ [-fpermissive]
::new(static_cast<void*>(__p)) _T1(__value);
(ARRAY_SIZE (x) - макрос, который вычисляет размер массива)
И поскольку эти векторы являются атрибутами класса, не имеет смысла инициировать их в конструкторе.
Я борюсь с этой проблемой в течение некоторого времени, и большинство «решений» предполагает переход на C ++ 11, что не вариант.
Любая помощь приветствуется.