考慮與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