マップは C++ STL (標準テンプレート ライブラリ) の一部です。マップは、ソートされたキーと値のペアを格納する連想コンテナーであり、各キーは一意であり、挿入または削除はできますが、変更はできません。キーに関連付けられた値は変更できます。
例えば: 従業員 ID がキー、名前が値である従業員のマップは次のように表すことができます。
キー | 価値観 |
---|---|
101 | ニキータ |
102 | ロビン |
103 | 深い |
104 | ジョン |
構文
template <class key, map::key_type class t, map::mapped_type compare="less," map::key_compare alloc="allocator<pair"> // map::allocator_type > class map; </class>
パラメータ
鍵: マップに保存されるキーのデータ型。
タイプ: マップに格納される値のデータ型。
比較する: 同じ bool 型の 2 つの引数を受け取り、値を返す比較クラス。この引数はオプションであり、バイナリ述語lessがデフォルト値です。
割り当て: アロケータ オブジェクトのタイプ。この引数はオプションであり、デフォルト値は allocator です。
マップの作成
マップは次のステートメントを使用して簡単に作成できます。
typedef pair value_type;
上記のフォームは、次のタイプのキーを持つマップを作成するために使用します。 キーの種類 と型の値 値のタイプ。 重要なことの 1 つは、マップのキーと対応する値は常にペアとして挿入され、マップにキーのみまたは値のみを挿入することはできないということです。
例1
#include #include #include #include using namespace std; int main() { map Employees; // 1) Assignment using array index notation Employees[101] = 'Nikita'; Employees[105] = 'John'; Employees[103] = 'Dolly'; Employees[104] = 'Deep'; Employees[102] = 'Aman'; cout << 'Employees[104]=' << Employees[104] << endl << endl; cout << 'Map size: ' << Employees.size() << endl; cout << endl << 'Natural Order:' << endl; for( map::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } cout << endl << 'Reverse Order:' << endl; for( map::reverse_iterator ii=Employees.rbegin(); ii!=Employees.rend(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } }
出力:
Employees[104]=Deep Map size: 5 Natural Order: 101: Nikita 102: Aman 103: Dolly 104: Deep 105: John Reverse Order: 105: John 104: Deep 103: Dolly 102: Aman 101: Nikita
メンバー関数
以下は、map のすべてのメンバー関数のリストです。
ビルダー/デストロイヤー
機能 | 説明 |
---|---|
コンストラクター | マップの構築 |
駆逐艦 | マップデストラクター |
演算子= | マップの要素を別のマップにコピーします。 |
イテレータ
機能 | 説明 |
---|---|
始める | マップ内の最初の要素を指すイテレータを返します。 |
始める | マップ内の最初の要素を指す const イテレータを返します。 |
終わり | 過去の終端を指すイテレータを返します。 |
いくつかの | 過去の終端を指す定数反復子を返します。 |
始める | 最後を指す逆反復子を返します。 |
作る | 先頭を指す逆反復子を返します。 |
始めます | 最後を指す定数逆反復子を返します。 |
信じる | 先頭を指す定数逆反復子を返します。 |
容量
機能 | 説明 |
---|---|
空の | マップが空の場合は true を返します。 |
サイズ | マップ内の要素の数を返します。 |
max_size | マップの最大サイズを返します。 |
要素へのアクセス
機能 | 説明 |
---|---|
オペレーター[] | 指定されたキーを持つ要素を取得します。 |
で | 指定されたキーを持つ要素を取得します。 |
修飾子
機能 | 説明 |
---|---|
入れる | マップに要素を挿入します。 |
消す | マップから要素を消去します。 |
スワップ | マップのコンテンツを交換します。 |
クリア | マップのすべての要素を削除します。 |
位置 | 新しい要素を作成してマップに挿入します。 |
埋め込みヒント | ヒントによって新しい要素を構築し、マップに挿入します。 |
オブザーバー
機能 | 説明 |
---|---|
キーコンプ | キー比較オブジェクトのコピーを返します。 |
値の補償 | 値比較オブジェクトのコピーを返します。 |
オペレーション
機能 | 説明 |
---|---|
探す | 指定されたキーを持つ要素を検索します。 |
カウント | 指定されたキーに一致する要素の数を取得します。 |
下限 | 反復子を下限に返します。 |
上界 | イテレータを上限に返します。 |
等しい範囲 | 指定されたキーと一致する要素の範囲を返します。 |
アロケータ
機能 | 説明 |
---|---|
get_allocator | マップの構築に使用されるアロケーター オブジェクトを返します。 |
非メンバーのオーバーロードされた関数
機能 | 説明 |
---|---|
演算子== | 2 つのマップが等しいかどうかを確認します。 |
演算子!= | 2 つのマップが等しいかどうかを確認します。 |
演算子< | 最初のマップが他のマップよりも小さいかどうかを確認します。 |
オペレーター<=< td> | 最初のマップが他のマップ以下であるかどうかを確認します。 | =<>
オペレータ> | 最初のマップが他のマップよりも大きいかどうかを確認します。 |
演算子>= | 最初のマップが他のマップより大きいかどうかを確認します。 |
スワップ() | 2 つのマップの要素を交換します。 |