姓と電話の登録はすでに知っている知識でできますね。
キーから、検索するにはfindメソッドを使います。そうするとキーに一致する反復子を返します。
存在しなければ最後の反復子を返します。
countメソッドは、キーに一致するキーの数を返します。size_type型を返すので、int型等にキャストしておくと便利です。
では、サンプルのプログラムを見てみましょう。
// multimap03.cpp #include <iostream> #include <map> #include <string> using namespace std; int main() { string name, tel; multimap<string, string>mp; pair<string, string>p; int count, i; while (1) { cout << "名前(0:終了)-- "; cin >> name; if (name == "0") break; cout << "電話-- "; cin >> tel; p.first = name; p.second = tel; mp.insert(p); } multimap<string, string>::iterator itr; while (1) { cout << "検索する名前(0:終了)-- "; cin >> name; if (name == "0") break; count = (int)mp.count(name); if (count == 0) { cout << "一致するものがありません" << endl; continue; } itr = mp.find(name); for (i = 0; i < count; i++) { cout << itr->first << "---" << itr->second << endl; itr++; } } return 0; }では、実行結果を見てみましょう。 「田中」さんは3人登録されていますが、検索すると全部の「田中」さんの 電話番号が表示されていますね。
Update Jul/13/2004 By Y.Kumei