Могу ли я предложить использовать 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;