Карта 2d Векторов - PullRequest
       10

Карта 2d Векторов

1 голос
/ 01 февраля 2012

Я пытаюсь сделать следующее

std::map <int, std::vector<std::vector<double> > > mapof2Dvectors;

std::vector<std::vector<double> > temp;
for(int u=0; u<size1; u++){
     temp.push_back( std::vector<double> ());
     temp[u].push_back(somedoublehere);
 }
 mapof2Dvectors[key].push_back(temp);

Не удается, когда я пытаюсь скомпилировать с «error: Semantic Issue: Нет жизнеспособного преобразования из« std :: vector> »в« const value_type »(он же« const std :: vector> ') »*

Любая помощь будет наиболее ценной.

1 Ответ

3 голосов
/ 01 февраля 2012

Могу ли я предложить использовать typedefs? Ошибка на самом деле довольно проста.

typedef std::vector<double> Vectors1d;
typedef std::vector<VectorOfDoubles> Vectors2d;
typedef std::map<int, Vectors2d> MapOf2dVectors;

Теперь вы пытаетесь сделать это:

MapOf2dVectors mapof2Dvectors;
Vector2d temp;
mapOf2dVectors[key].push_back(temp);

Помогает ли это определить проблему? Вы в основном пытаетесь push_back Vectors2d в объект Vectors2d, когда Vectors2d :: push_back ожидает объект Vectors1d. Это должно быть в соответствии с вашими типами:

mapOf2dVectors[key] = temp;

или быстрее:

mapOf2dVectors[key].swap(temp);

Простая аналогия вашей ошибки выглядит следующим образом:

vector<int> v1;
vector<int> v2;
v1.push_back(v2); // error, push_back accepts only a single integer here

Так что я не уверен, что вы ищете, но, вероятно, это будет либо:

v1.insert(v1.end(), v2.begin(), v2.end());

Или это:

v1 = v2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...