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;
}