gpt4 book ai didi

c++ - 在 unordered_multimap 中准确地迭代每个键一次的有效方法

转载 作者:行者123 更新时间:2023-12-02 10:22:16 25 4
gpt4 key购买 nike

我有一个 std::unordered_multimap我想只对每个键进行一次迭代。

我目前正在做的是将所有 key 复制到 std::set .这对我来说似乎效率很低,我想知道是否有更聪明的方法来做到这一点。如果是 std::multiset我会使用 std::multiset::upper_bound()成员来访问下一个键,但是这个成员在无序版本中显然是不可用的。

我发现了一些相关的问题和答案,但就我的目的而言,它们似乎已经过时/过于复杂。

那么有没有一种遍历不同键的好方法呢?我仍在学习,因此将我指向正确的方向也将不胜感激!谢谢。

最佳答案

[...] elements with equivalent keys are adjacent to each other in the iteration order of the container.



Source , 或者你可以认为 equal_range 的存在保证了这一点.请注意,“等效”位于 KeyEqual 下。即它的意思是 ==如果默认 std::equal_to<Key>被指定。

因此,逐个元素迭代,跳过具有相同键的元素,将起作用:
for (auto it = c.begin(); it != c.end(); ) {
auto const& key = it->first;
std::cout << key << std::endl;
while (++it != c.end() && it->first == key) // or c.key_eq()
;
}

关于c++ - 在 unordered_multimap 中准确地迭代每个键一次的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59589626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com