我正在尝试执行以下操作
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/