まったく同じキーのセットを持つことが保証されている2つのマップがある場合、両方のマップを効率的に反復するにはどうすればよいですか?
たとえば、次のマップがあるとします。
std::map<std::string, int> iMap;
std::map<std::string, std::vector<int> > vMap;
ある時点で、それらは両方ともまったく同じキーのセットになります。vMap
対応する値に基づいてのすべての値を更新する必要がありiMap
ます。最初に頭に浮かぶのは、次のようなものです。
typedef map<string, int> map_t;
BOOST_FOREACH(map_t::value_type &p, iMap) {
vMap[p.first].push_back(p.second);
}
vMap[n]
ただし、キーを順番に効果的に調べていることを考慮して、各値を検索する必要があるのはかなり無駄に思えます。これを利用する方法はありますか?