返回std :: map值的地址是安全的吗?

时间:2012-08-31 12:25:04

标签: stl map

我有std::map<std::string, myStruct>。返回myStruct条目的地址是安全的吗? 我确信我的条目不会被删除,但可以添加其他条目。

Type::iterator it = m_map.find(key);

if (it != m_map.end())
{
     return &(it->second);
}

2 个答案:

答案 0 :(得分:6)

很安全 在std::map的情况下,只有删除元素的迭代器/引用/指针才会失效。

参考:
C ++ 03标准23.1.2 / 8:

  

只有迭代器和对已擦除元素的引用无效

答案 1 :(得分:2)

它是包含对象的地址,而不是容器的分配空间。

顺便说一句,试着解释一下你想做什么以及你的目标是什么,这样我们就会更有帮助。