std::mapの使い方

 

std::map< 型, 型> tbl;

 

型が2つ指定できるので、keyとvalueの型を自由に変更できる。

std::map<std::string, int> tbl1;

tbl1["hoge"] = 0;

 

std::map<int, std::string> tbl2;

tbl2[100] = "hoge";

 

↓ソース

#include <iostream>

#include <string>

#include <map>

 

#define msg(a) std::cout<<a<<std::endl;

 

int main(int argc, char **argv)

{

std::map<std::string, int> tbl;

 

tbl["hoge"] = 0;

tbl["piyo"] = 10;

tbl["fuga"] = 20;

tbl["test"]; //キーのみの場合,0が格納される。

msg(tbl["hoge"]);

msg(tbl["piyo"]);

msg(tbl["fua"]); //存在しないキーは新しく生成される? 値 0 キー "fua"

}

 

 

キーを探す場合、イテレータを使用する。

#include <iostream>

#include <string>

#include <map>

 

#define msgl(a) std::cout<<a<<std::endl;

#define msg(a) std::cout<<a;

typedef std::map<std::string, int> Table; //型を決めておく

 

int main(int argc, char **argv)

{

Table tbl;

 

tbl["hoge"] = 123;

tbl["hogehoge"] = 456;

tbl["hohoge"] = 789;

 

//検索

Table::iterator ret = tbl.find("hogeHoge");

 

//最後まで検索して、なかった場合

if(ret != tbl.end())

{

//見つかった場合

msg("key:");

msgl(ret->first);

msg("value:");

msgl(ret->second);

}

else

{

msgl("Not Found.");

}

 

return 0;

}