○mapによる連想配列
■連想配列とは
通常の配列は数字を添え字とした配列ですが連想配列は
文字列などを添え字として配列です
ary["test"]=○○;
○○=ary["test"];
上記のように配列の添え字を文字列で扱うことが出来ます
■連想配列として使うには
#include <map> 必要なヘッダファイル.
map<TYPE,TYPE> data; TYPE型のキーと要素の宣言
data.size() data[]の要素数を返す関数.
data[N] 配列name[ ]のキーNのデータ.
data.count(x) xをキーに持つ要素の数を返す。
data.max_size() 最大サイズ(要素数の上限)を返す。
**********************************************************************
■(string stringの例)
#pragma warning( disable : 4786 )//警告を止める
#include <stdio.h>
#include <string>
#include <map>
int main(){
std::map<std::string,std::string> data;
data["a"]="AA";
data["b"]="BB";
data["c"]="CC";
data["d"]="DD";
data["e"]="EE";
if(data.count("b")) printf("%s\n",data["b"].c_str());else printf("該当なし\n");
if(data.count("x")) printf("%s\n",data["x"].c_str());else printf("該当なし\n");
return 0;
}
○結果
BB
該当なし
■(CString CStringの例)
#include <map>
std::map<CString,CString> data;
data["inaba"]="いなば";//値を入れます
data["minoru"]="みのる";
//data.count("") キーの要素の数
if(data.count("inaba")) printf("%s\n",data["inaba"]); else printf("%s\n","該当なし");
data["inaba"]="稲葉";//変更も可能
if(data.count("inaba")) printf("%s\n",data["inaba"]); else printf("%s\n","該当なし");
data.erase("inaba");//キーの位置の要素を削除
if(data.count("inaba")) printf("%s\n",data["inaba"]); else printf("%s\n","該当なし");
printf("現在の要素数は%dです\n",data.size());
printf("要素数の上限は%dです\n",data.max_size());
○結果
いなば
稲葉
該当なし
現在の要素数は1です
要素数の上限は536870911です
(int CStringの例)------------------------------------------
std::map<int,CString> data;
data[2]="2です";//値を入れます
data[3]="3です";
//data.count("") キーの要素の数
if(data.count(1)) printf("%s\n",data[1]); else printf("%s\n","該当なし");
if(data.count(2)) printf("%s\n",data[2]); else printf("%s\n","該当なし");
○結果
該当なし
2です
■(CString intの例)
std::map<CString,int> data;
data["2です"]=2;//値を入れます
data["3です"]=3;
//data.count("") キーの要素の数
if(data.count("1です")) printf("%d\n",data["1です"]); else printf("%s\n","該当なし");
if(data.count("2です")) printf("%d\n",data["2です"]); else printf("%s\n","該当なし");
○結果
該当なし
2
▲トップページ
>
Windows と C++