考虑与std::multimap
使用,在那里我给出了一系列的迭代器:现在是否可以使用基于范围for循环与迭代器范围?
std::unordered_multimap<std::string, MyObject> mymap;
auto& range = mymap.equal_range("some_key");
for (auto& the_pair : range)
{
}
,上面的代码无法编译,但我用它来演示目的。是否有可能像这样使用一对迭代器使用基于范围的for循环?我不认为这是直接可能的,所以我想我的问题是关于在这个用例中STL中是否有适配器类。我可以写我自己的,但这似乎是一个常见的情况。
更新:
如果这不是一个常见的情况和STL不提供这种类型的使用这种代理或适配器,什么是实现这些要求的?我在想,我需要重载免费功能begin
和end
,并且还要为std::pair<T,U>
定义一个适配器迭代器类。我只是在对其进行概念刺探,但请让我知道!在此先感谢大家。
您的'iter_pair_range'类假设这两个对中的两个类型都是相同的类型,这在我的示例中不是这种情况。 – 2015-03-19 12:51:02
@ void.pointer你是什么意思? Equal_range将始终返回一对相同类型 – Rado 2015-03-19 12:54:32
@ void.pointer对中的类型不相同,但迭代器类型是。在两种情况下它都是'multimap :: const_iterator'。事实上,基于范围的for甚至不会用'begin()'和'end()'返回不同类型的迭代器。 –
JorenHeit
2015-03-19 12:55:22