gpt4 book ai didi

c++ - 在唯一键上 boost unordered_multimap 循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:19 25 4
gpt4 key购买 nike

在 boost unordered_multimap 中遍历唯一键的最简单方法是什么。

例如我有这个:

std::set<int> used;
for (auto p : valuesMap)
{
if (used.count(p.first))
continue;
used.insert(p.first);

auto range = valuesMap.equal_range(p.first);
if (p.first)
for (auto v = range.first; v != range.second; ++v)
//do something;
}

有没有更好的方法来做到这一点。似乎无序映射应该已经知道唯一键。

最佳答案

你想要做的是找到一种方法让迭代器跟随某个键。在 multimap 中,我通常使用 upper_bound。但是由于 unordered_multimap 没有那个 - 我将不得不使用 equal_range.second:

for (auto iter=valueMap.begin();
iter!=valueMap.end();
iter=ValueMap.equal_range(iter->first)->second){
uniq_key=iter->first;
// Do whatever you want with uniq_key
}

但是你的例子对我来说很奇怪——因为你确实遍历了所有元素。如果我想编写您的代码,做您做的事,我会这样做:

for (auto iter=valueMap.begin()
iter!=valueMap.end();
){ // Notice the lack of ++iter!!!
auto end=valueMap.equal_range(ier->first)->second;
for (;iter!=end;++iter)
// Do something
}

关于c++ - 在唯一键上 boost unordered_multimap 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19716202/

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