multimapの使い方
以前、以下のリンクの記事にてmapの使用法を示した。
chicagopile1-75.hatenablog.com
mapでは、キーの値が重複した場合、値を複数保持できないという仕様になっている。
例えば、以下のような状態である。
int main(){ map<int, int> test; test.insert(std::make_pair(1, 3)); test.insert(std::make_pair(1, 100)); test.insert(std::make_pair(3, 8)); test.insert(std::make_pair(2, 1)); //mapの中身を全てcoutで確認 for (auto itr = test.begin(); itr != test.end(); ++itr) { std::cout << "key = " << itr->first<<"\t"<< ", value = " << itr->second; } cout << endl; return 0; }
このコードを実行すると、key=1に対応する値はvalue=3しか出力されない。
mapの代わりにmultimapを使用すると同じkeyを持つ値を複数保持することができる。
int main(){ multimap<int, int> test; test.insert(std::make_pair(1, 3)); test.insert(std::make_pair(1, 100)); test.insert(std::make_pair(3, 8)); test.insert(std::make_pair(2, 1)); //multimapの中身を全てcoutで確認 for (auto itr = test.begin(); itr != test.end(); ++itr) { std::cout << "key = " << itr->first << "\t value = " << itr->second << endl; } cout << endl; return 0; }
上のコードはmap
key=1に対応する値のvalue=3とvalue=100が出力されることから、
同じkeyを持つ場合でも複数の値が保持されていることが分かる。