mapの使い方~基本編~

早く使えるようになりたいC++STLとかヨクワカンネのレベルなので,ちょこちょこ勉強.

#include <iostream>
#include <string>
#include <map>

using namespace std;

int main(){

  map<string, int> mymap;

  mymap.insert( map<string, int>::value_type("hoge", 1) );
  mymap.insert( map<string, int>::value_type("foo", 2) );
  mymap.insert( map<string, int>::value_type("bar", 3) );

  /* これでも上書きできる */
  mymap["hoge"] = 4;

  cout << mymap["hoge"] << "\n";
  cout << mymap["foo"] << "\n";
  cout << mymap["bar"] << "\n";

  return 0;
}

イテレーションはこんな感じ

map<string, int>::iterator it = mymap.begin();
while(it != freq_table.end() ){
  cout << (*it).first << ":" << (*it).second << endl;
  ++it;
}

endlって"\n"と同じ意味っぽい.知らなかった.first, secondというのがあまり気に食わないけれど,データ構造を考えるとそうなんだろうね.


いちいちテンプレートを引数が面倒くさければ,自分で型をtypedefすればいい.

typedef map<string, int> MyMap_t;

MyMap_t mymap;

MyMap_t::value_type("hoge", 1);

MyMap_t::iterator it = mymap.begin();
/* 以下略 */

よし,これでNaiveBayesが書けるようになった.はず.逃避したくなったらC++でも書いてみよう.