我正在尝试执行以下操作
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&gt;'没有可行的转换'const value_type'(又名'const std :: vector&gt;')“
非常感谢任何帮助。
答案 0 :(得分:3)
我建议使用一些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对象时,你基本上试图将vectors_d推送到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;