mapクラスでキー名でアクセス
http://www.geocities.jp/ky_webid/cpp/library/010.html
mapクラスの続きです。
mapクラスはツリー構造なので直接アクセスすることは通常出来ないのですが、キー名でアクセスすることはできるのでそれが[]演算子に割り当てられいます。
ということで使ってみます。
#include <iostream> #include <map> #include <string> using namespace std; int main () { typedef map<string, int> map_type; map_type data; data.insert( map_type::value_type("ddd",40) ); data.insert( map_type::value_type("aaa",10) ); data.insert( map_type::value_type("ccc",30) ); data.insert( map_type::value_type("bbb",20) ); data.insert( map_type::value_type("eee",50) ); cout << data["aaa"] << endl; return 0; }
$ main 10
ちゃんとキー名でアクセスできてますね。
また、存在しないキー名にアクセスした場合はエラーにならずにそのキー名が登録されます。
つまりinsert関数を使わなくても値の設定ができるということになります。
#include <iostream> #include <map> #include <string> using namespace std; int main () { typedef map<string, int> map_type; map_type data; // 存在しないキーに値を設定する data["foo"] = 999; cout << data["foo"] << endl; return 0; }
$ main 999
便利ですね。