STL Samples : <map>
重複を許さない辞書
map
重複を許す辞書
multimap
#include <iostream> #include <string> #include <map> using namespace std; template<class Pair> void print_pair(const Pair& x) { cout << '(' << x.first << ':' << x.second << ") "; } void std_map() { cout << "map" << endl; const char* number[] = { "zero", "one", "two", "three" }; map<int,string> m; int i; for ( i = 0; i < 4; ++i ) m[i] = number[i]; map<int,string>::iterator it; for ( it = m.begin(); it != m.end(); ++it) print_pair(*it); cout << endl; for ( i = 2; i < 6; ++i ) { it = m.find(i); if ( it != m.end() ) cout << "key:" << it->first << " --> value:" << it->second << endl; else cout << i << " not found." << endl; } } void std_multimap() { cout << "multimap" << endl; const char* jp[] = { "いち", "に", "さん", "よん" }; const char* uk[] = { "one ", "two", "three" }; const char* gr[] = { "eins", "zwei" }; multimap<int,string> m; int i; for ( i = 0; i < 4; ++i ) m.insert(make_pair(i+1,jp[i])); for ( i = 0; i < 3; ++i ) m.insert(make_pair(i+1,uk[i])); for ( i = 0; i < 2; ++i ) m.insert(make_pair(i+1,gr[i])); typedef multimap<int,string>::iterator iter; iter it; for ( it = m.begin(); it != m.end(); ++it) print_pair(*it); cout << endl; pair<iter,iter> range; for ( i = 0; i < 6; ++i ) { range = m.equal_range(i); if ( range.first != range.second ) { cout << "key:" << i << " --> value:"; while ( range.first != range.second ) { cout << range.first->second << ' '; ++range.first; } cout << endl; } else { cout << i << " not found." << endl; } } }