从std::map::find
返回指针并将其用作数据的方式,与获取数据的副本相比,是否存在危险性?
目前,我获取一个指向映射中条目的指针,并将其传递给另一个函数以显示数据。我担心项目移动会导致指针无效。这是个合理的担忧吗?
这是我的示例函数:
MyStruct* StructManagementClass::GetStructPtr(int structId)
{
std::map<int, MyStruct>::iterator foundStruct;
foundStruct= myStructList.find(structId);
if (foundStruct== myStructList.end())
{
MyStruct newStruct;
memset(&newStruct, 0, sizeof(MyStruct));
myStructList.structId= structId;
myStructList.insert(pair<int, MyStruct>(structId, newStruct));
foundStruct= myStructList.find(structId);
}
return (MyStruct*) &foundStruct->second;