有没有办法在 unordered_map 的某个位置插入元素?
Posted
技术标签:
【中文标题】有没有办法在 unordered_map 的某个位置插入元素?【英文标题】:Is there a way to insert element at certain position in unordered_map? 【发布时间】:2017-05-12 11:57:59 【问题描述】:我正在尝试将元素插入到 unordered_map 中的某个位置,覆盖该位置的当前对。我试过以下代码:
unordered_map<string, string>::iterator it = myMap.begin() + 256;
myMap.insert(it, newPair);
这不起作用,因为它会留下错误。有人可以帮忙吗?提前谢谢你。
【问题讨论】:
您不能覆盖地图中的key
。那会破坏那张地图。为什么需要这个?
你了解哈希表的工作原理吗?也许在使用 unordered_map 之前先看看。
我正在实现 LZW 压缩算法,我使用 unordered_map 来保存 string-binary_code 对...
无序地图的一个有趣之处在于它们是无序的。也就是说,存储在其中的东西并不是以特定的、有保证的顺序存储的。因此,任何取决于事物在无序映射中的存储顺序的逻辑都可能是错误的。
几乎听起来像矢量会更合适。另请注意,std::unordered_map
使用前向迭代器,因此 unordered_map<string, string>::iterator it = myMap.begin() + 256;
将无法编译。
【参考方案1】:
您不能将对象插入到 unordered_map 中的某个位置。 unordered_map 使用哈希实现来实现所有常用函数(插入、删除、查找)的恒定时间。 unordered_map 中的键始终是 const 你不能改变它。关于插入函数的迭代器,只是一个提示,这个值可能会被容器使用也可能不会被容器用来优化操作。
【讨论】:
以上是关于有没有办法在 unordered_map 的某个位置插入元素?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法将 8bitX32 ymm 寄存器右/左洗牌 N 个位置(c++)
在 std::map 和 std::unordered_map 之间进行选择 [重复]