将指针向量推入std :: map

时间:2019-11-14 10:20:02

标签: c++ pointers stl maps

我的代码的一部分运行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 &

我对如何将其推入地图感到困惑。

谢谢

2 个答案:

答案 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;


编辑以下OP注释:

  

如果我要为相同的键值推送条目怎么办?

然后,您将获得密钥的现有存储向量,并将push_back指向指向class_X实例的指针。

MapStrPtr[key].pushback(ptr);