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;
}