7

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

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

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

2 回答 2

8

这是安全的。
如果std::map只有迭代器/引用/指向已删除元素的指针无效。

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

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

于 2012-08-31T12:31:13.347 回答
2

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

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

于 2012-08-31T12:30:22.283 回答