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的区别?
答案 0 :(得分:4)
std::map
迭代器仅在擦除时失效(erase
或clear
)。将新元素插入到地图中并不会影响现有的迭代器。这与C ++ 98和C ++ 11中的相同。
如果迭代器仍然有效,则它指向的键也保持有效。