C++ unordered_map中key的地址是不变的吗?

例如我想写一个缓存池: auto s = new Symbol(); auto rst = _buffer.insert({str, s}); assert(rst.second); s->_str = &rst.first->first; // some code... assert(&_buffer.find(*s->_str)->first == s->_str); 以上代码是对的吗?虽然unordered_map的key是const的,但我不确定key的address是否会变(同一个string对象)。
关注者
55
被浏览
7735

理论上是可以做到不变的。标准要求unordered_map用linked list来解决冲突, linked list的node可以做到地址不变.

我没有试过, 应该可以把.

不过unordered_map你按照key来查找,速度也是非常快.