我在學習如何遍歷從boost :: unordered_multimap返回的具有相同鍵的值。所以,我這樣做,在boost :: unordered_multimap中循環遍歷equal_range
boost::unordered_multimap<string, string> sample;
在,我有可能,
<"one", "1">,
<"one", "11">,
<"two", "2">,
<"three", "3">,
<"three", "3">,
<"three", "33">,
<"three", "333">,
,我試圖讓對應於 「二」,所以我做了這個值,
std::pair<boost::unordered_multimap<string, string>::iterator, boost::unordered_multimap<string, string>::iterator> > ret = sample.equal_range("two");
我重複遍歷它就好像,
for(boost::unordered_multimap<string, string>::iterator> it = ret.first ; it != ret.second; it++)
{
cout<<"The values mapped are : "<<*it->second<<"\n";
}
我會得到值:2,因爲這是映射的唯一值?我會第一次擺脫循環嗎?我試圖在線獲取答案/關於boost文檔,但我沒有成功。這可能是一個基本問題,但我正在努力學習。任何幫助,將不勝感激。
TIA
-R
我不知道,我只有一個值映射,我可能有兩個,三個或n個值映射。所以一個循環將是我的選擇。我想知道是否在調用equal_range並遍歷返回對後,如果我將所有值映射到它包括最後一個。 – codeworks
檢查我的**編輯**。 –
是的,謝謝你。我試了一下,它的工作原理。我明白,但我想了解如果只有一個值映射到關鍵元素,這是如何工作的。從equal_range調用返回的ret會像ret.first等於ret.last,因此循環不應該正確輸入?這是如何工作的,這是我的困惑。 – codeworks