我对使用多个指针指向对象有个疑问。 我有一个向量中的指针,另一个在地图中。 地图使用矢量来索引对象。示例代码:如何通过向量/地图使用多个指向对象的指针
class Thing
{
public:
int x = 1;
};
Thing obj_Thing;
std::vector<Thing*> v_Things;
v_Things.push_back(&obj_Thing);
std::map<int, Thing*> m_ThingMap;
m_ThingsMap[v_Things[0]->x] = v_Things[0]; // crucial part
是不是很好的做法,像这样指定彼此的指针?
该矢量和/或地图应该保存地址吗?或者我应该使用指向地图指针的指针?
'v_Things(0)'应该可能是'v_Things [0]'? 'v_Things.push_back(&obj_Thing);'是非常危险的,因为它可以很容易地创建悬挂指针('obj_Thing'生命周期可能比矢量和映射的生命周期更早结束) – UnholySheep
而不是存储'Thing *',你可能想要存储'std :: shared_ptr'而不是,以确保该对象不会太早解除分配(并指出它是在两个单独的“事物”之间共享) –
UnholySheep
固定的错字,谢谢。如果不是所有v_Things成员都必须位于m_ThingsMap中,我还应该使用shared_ptr吗? –