我的代码的一部分运行for循环,生成指向类的指针,每次for循环将生成的指针推入指针类型的向量。
std::vector<class_X*>strvecptr;
std::map<int32,std::vector<class_X*>> MapStrPtr;
for(int32 key=0;key<5;key++)
{
for(int32 i=0;i<5;i++)
{
class_X* ptr = new class_X* (i);
\\ do some calculations
strvecptr.push_back(ptr);
}
MapStrPtr[Key].push_back(strvecptr);
}
插入地图会引发错误
C2664: std::vector<_Ty>::push_back : cannot convert parameter 1 from std::vector<_Ty> to class_X* const &
我对如何将其推入地图感到困惑。
谢谢
答案 0 :(得分:0)
您的地图本身不包含矢量,但应保留class_X*
。
更改此:
std::map<int32_t, std::vector<class_X*>> MapStrPtr;
收件人
std::map<int32_t, class_X*> MapStrPtr;
答案 1 :(得分:0)
我对如何将其推入地图感到困惑。
您无需push_back
将矢量插入地图。您将整个向量一次性插入给定键。
更改
MapStrPtr[key].pushback(strvecptr);
到
MapStrPtr[key] = strvecptr;
如果我要为相同的键值推送条目怎么办?
然后,您将获得密钥的现有存储向量,并将push_back
指向指向class_X
实例的指针。
MapStrPtr[key].pushback(ptr);