有没有办法在 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&lt;string, string&gt;::iterator it = myMap.begin() + 256; 将无法编译。 【参考方案1】:

您不能将对象插入到 unordered_map 中的某个位置。 unordered_map 使用哈希实现来实现所有常用函数(插入、删除、查找)的恒定时间。 unordered_map 中的键始终是 const 你不能改变它。关于插入函数的迭代器,只是一个提示,这个值可能会被容器使用也可能不会被容器用来优化操作。

【讨论】:

以上是关于有没有办法在 unordered_map 的某个位置插入元素?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法将 8bitX32 ymm 寄存器右/左洗牌 N 个位置(c++)

修改 boost unordered_map 中键的值

Google Vision API 无法识别个位数

在 std::map 和 std::unordered_map 之间进行选择 [重复]

unordered_map 哈希函数 / 如何防止 unordered_map 被卡

unordered_map _begin 访问权限错误