我正在尝试执行以下操作

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);

当我尝试使用“错误:语义问题:从'std::vector>'到'const value_type'(又名'const std::vector>')的可行转换”时,它失败了

非常感激任何的帮助。

最佳答案

我可以建议使用一些typedef吗?该错误实际上很简单。

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);

这有助于发现问题吗?当Vectors2d::push_back需要一个Vectors1d对象时,您基本上是在尝试将Vectors2d推入Vectors2d对象。根据您的类型应该是这样的:
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;

关于c++ - 2d vector 图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9098808/

10-09 13:35