【发布时间】:2020-03-10 06:29:26
【问题描述】:
我的一部分代码运行一个 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 &
我很困惑如何将其推送到地图中。
谢谢
【问题讨论】:
-
你想要
MapStrPtr[key] = myFilledVector;吗? -
是的,但是什么你想推到那里?如果你要一个一个地push_back每个元素,那是没有意义的,你可以将整个向量复制到地图中。
-
是的。我想根据我的地图中的某些键值存储所有推送的指针向量
-
我有点不明白你为什么发布伪代码。
for(int i=0;i<10;++i)并没有比for(loop on i)输入更多,但它是真实的代码。new class_X* (arg depends on i);与new class_X (i);相同(另请注意*!)。请阅读minimal reproducible example -
我很抱歉没有提供一个最小的可重现示例。我会在下一篇文章中更正它。感谢您的建议。