存储指向地图键的指针

时间:2015-07-02 01:34:55

标签: c++ c++11

std::map<Key,Value> mymap;
(void)mymap[Key(...)]; // create value if not there
typename std::map<Key,Value>::iterator it = mymap.find(key);
it->second.pkey = &it->first; // store a pointer to the actual key

这样安全吗?换句话说,是否允许在插入/擦除操作期间复制键,这会使Value::pkey无效?

任何C ++ 98与C ++ 11的区别?

1 个答案:

答案 0 :(得分:4)

std::map迭代器仅在擦除时失效(eraseclear)。将新元素插入到地图中并不会影响现有的迭代器。这与C ++ 98和C ++ 11中的相同。

如果迭代器仍然有效,则它指向的键也保持有效。