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

便利ですね。