【发布时间】:2016-06-06 15:38:16
【问题描述】:
我有一个 unordered_map,它包含一个枚举和一个字符串作为第二个。第一个值可能以不同的顺序出现多次。这是一个例子:
enum SomeType
{
TYPE1,
TYPE2,
};
static std::unordered_map<SomeType, std::string> value_map =
{
{ TYPE2, "Value that shouldn't be found" },
{ TYPE1, "Value that gets found first" },
{ TYPE2, "Value that also never gets found" },
{ TYPE1, "Value that gets found second" },
{ TYPE2, "Value that gets found last" },
};
我想按如下方式遍历地图:例如,首先我想找到TYPE1 的配对,这将使我获得第一个TYPE1 值。之后再次搜索TYPE1 值不会让我获得第一个,而是可以在它之后找到的下一个。在此之后搜索 TYPE2 值只会得到最后一个值。
基本上我只想找到下一个匹配值,但在最后一个找到的值之前都没有。
我多次尝试实现这样的东西,但我不太确定如何实现这样的算法。
如何实现这样的算法?
尝试展示我想要的完整代码示例:https://godbolt.org/g/CgNZnj
【问题讨论】:
-
仅供参考,地图的键必须是唯一的。不能有多个元素具有相同的键。
-
注意组件名称,Unordered 映射。插入顺序与遍历顺序无关。
-
你需要一个vector/deque/list/forward_list/array 对。所有关联容器,无论是有序的还是无序的,都需要唯一的键,或者将等效的键组合在一起。
-
“我有一个 unordered_map,它包含一个枚举和一个字符串作为第二个。第一个值可能会以不同的顺序出现多次。” 没有。
标签: c++ c++14 unordered-map