マップとは何ですか?C ++で作成して使用するにはどうすればよいですか?
3 に答える
つまりstd::map
、値のペアを格納します。各ペアで、最初の値はキーと呼ばれ、関連する他の値をすばやく検索するために使用できます。
あなたは書ける:
std::map<std::string, int> ages;
ages["Fred"] = 52;
ages["Sue"] = 31;
std::cout << "Fred's age is " << ages["Fred"] << std::endl;
マップとは何ですか-それは関連する値のペアを保持するデータ構造です。各ペアは、キーと値で構成されます。マップ内のすべてのキーは一意である必要がありますが、異なるキーが同じ値を持つことができます。マップは、辞書(実際には一部の言語でマップと呼ばれるもの)のように、ルックアップテーブルのキャッシュまたは実装によく使用されます。
C ++でマップを実装する方法については、簡単に言えば、そうではありません。std::mapまたはそのバリアントの1つを使用します。
マップはコレクションタイプであり、STL(標準テンプレートライブラリ)のC++で実装されています。ここにライブラリドキュメントからの公式の説明があります。
Mapは、Key型のオブジェクトをData型のオブジェクトに関連付けるソートされた連想コンテナです。マップはペア連想コンテナです。つまり、その値型はペアです。これは一意の連想コンテナでもあり、2つの要素が同じキーを持っていないことを意味します。マップには、新しい要素をマップに挿入しても、既存の要素を指すイテレータが無効にならないという重要な特性があります。マップから要素を消去しても、消去されている要素を実際に指しているイテレータを除いて、イテレータが無効になることはありません。
例
struct ltstr
{
bool operator()(const char* s1, const char* s2) const
{
return strcmp(s1, s2) < 0;
}
};
int main()
{
map<const char*, int, ltstr> months;
months["january"] = 31;
months["february"] = 28;
months["march"] = 31;
months["april"] = 30;
months["may"] = 31;
months["june"] = 30;
months["july"] = 31;
months["august"] = 31;
months["september"] = 30;
months["october"] = 31;
months["november"] = 30;
months["december"] = 31;
cout << "june -> " << months["june"] << endl;
map<const char*, int, ltstr>::iterator cur = months.find("june");
map<const char*, int, ltstr>::iterator prev = cur;
map<const char*, int, ltstr>::iterator next = cur;
++next;
--prev;
cout << "Previous (in alphabetical order) is " << (*prev).first << endl;
cout << "Next (in alphabetical order) is " << (*next).first << endl;
}
これは、 STLのマップタイプの完全なドキュメントです。
これがお役に立てば幸いです。