增强unordered_multimap循环通过唯一键
boost unordered_multimap loop over the unique keys
在
升压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++17)
- 映射唯一值和重复值的有效方法.可以访问键或值的位置
- 在unordered_multimap中精确迭代一次每个键的有效方法
- 如何从一组具有从左到右优先级的整数值创建有序整数键?
- 字数统计函数在将单词添加到一组唯一单词时遇到问题
- 如何在给定任意数量的整数的情况下创建一个唯一键?并使用该键存储,然后从地图中查找
- 如何使用推力将相同键从一个数组复制到另一个数组的值
- 合并带有唯一键的Hushtables成一个C
- 寻求具有非唯一键或值的双向图
- 使用shared_ptr获得唯一所有权(有点)——这是一种好的做法吗
- set 如何与唯一键一起工作,但在C++中具有等效的键值
- 用于插入 std::unordered_set 的 3D 间坐标的唯一键
- 使用 GLFW 一次处理多个键输入
- 具有唯一键的多映射
- C++ 如何在具有 O(n) 遍历的不同映射容器中区分具有带值的重复键和具有值的唯一键的 Multimap
- 如何创建Google+Plus一键,同时已经使用GooglePlay游戏服务SDK for C++实现了排行榜
- 一键构建所有配置和平台
- c++是唯一一种使用mpi的语言吗
- 使用批处理文件使用 Cmake & Msbuild (vs2010) 一键构建我的项目
- QML - 一键锁定/解锁屏幕方向(安卓和最终的 ios)