2012-09-25 42 views
0

如果我有兩個保證具有完全相同的鍵的地圖,如何有效地迭代這兩個地圖?使用相同的鍵有效地迭代多個地圖

例如,說我有以下地圖:

std::map<std::string, int> iMap; 
std::map<std::string, std::vector<int> > vMap; 

在某些時候,他們都結束了完全相同的一組按鍵。我現在需要根據相應的iMap值更新vMap的所有值。 ,想到的第一件事是什麼這樣的:

typedef map<string, int> map_t; 
BOOST_FOREACH(map_t::value_type &p, iMap) { 
    vMap[p.first].push_back(p.second); 
} 

然而,似乎有點浪費,我們要查找的vMap[n]每個值考慮,我們正在有效地通過按鍵會秩序。有什麼方法可以利用這一點嗎?

回答

5

如果您是絕對確保密鑰是相同的,你既可以映射遍歷步調一致:

auto it1 = iMap.begin(); 
auto it2 = vMap.begin(); 

while (it1 != iMap.end()) 
{ 
    it2->second.push_back(*it1); 
    ++it1; 
    ++it2; 
} 
+0

啊哈....當然。我現在很尷尬:/ –