在做了几年 C# 和最近的 Objective C 之后,我才刚刚回到 C++。
我之前做过的一件事是为 std::map 滚动我自己的迭代器适配器,它将只引用值部分,而不是键值对。这是很常见和很自然的事情。 C# 为这个工具提供了它的 Dictionary 类的 Keys 和 Values 属性。 Objective-C 的 NSDictionary 同样具有 allKeys 和 allValues。
自从我“离开”以来,Boost 已经获得了 Range 和 ForEach 库,我现在正在广泛使用它们。我想知道两者之间是否有一些设施可以做同样的事情,但我找不到任何东西。
我正在考虑使用 Boost 的迭代器适配器来解决问题,但在我走这条路之前,我想我想在这里问一下是否有人知道 Boost 中的这种设施,或者其他现成的地方?
最佳答案
替换之前的答案,以防其他人像我一样发现这个。从 boost 1.43 开始,提供了一些常用的范围适配器。在这种情况下,您需要 boost::adaptors::map_values。相关示例: http://www.boost.org/doc/libs/1_46_0/libs/range/doc/html/range/reference/adaptors/reference/map_values.html#range.reference.adaptors.reference.map_values.map_values_example
关于c++ - 迭代器适配器仅迭代 map 中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/259240/