logo

C++ 標準テンプレート ライブラリ (STL) のマップ

地図は 連想コンテナ マップされた方法で要素を保存します。各要素にはキー値とマップされた値があります。マップされた 2 つの値が同じキー値を持つことはできません。

std::map はマップ コンテナーのクラス テンプレートであり、ヘッダー ファイル内で定義されます。



基本的な std::map メンバー関数

std::map に関連付けられたいくつかの基本関数は次のとおりです。

  • 始める() – マップ内の最初の要素へのイテレータを返します。
  • 終わり() – マップ内の最後の要素に続く理論上の要素への反復子を返します。
  • サイズ() – マップ内の要素の数を返します。
  • max_size() – マップが保持できる要素の最大数を返します。
  • 空の() – マップが空かどうかを返します。
  • ペア挿入(キー値, マップ値) – 新しい要素をマップに追加します。
  • 消去(イテレータの位置) – イテレータが指す位置にある要素を削除します。
  • 消去(const g) – マップからキーと値の「g」を削除します。
  • クリア() – マップからすべての要素を削除します。

std::map の例

次の例は、マップ コンテナーで基本的な操作を実行する方法を示しています。

例 1: begin() 関数と end() 関数

C++








// C++ program to illustrate the begin and end iterator> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>mp; // マップにいくつかの値を挿入します mp['one'] = 1; mp['two'] = 2; mp['three'] = 3; // マップ内の最初の要素を指すイテレータを取得します。 // mapint>::iterator it = mp.begin(); // マップを反復処理し、要素を出力します while (it != mp.end()) { cout<< 'Key: ' << ', Value: ' ++it; } return 0; }>

>

>

出力

Key: one, Value: 1 Key: three, Value: 3 Key: two, Value: 2>

上記のメソッドの複雑さ:

時間計算量: O(n) ここで、n はマップのサイズです。

補助スペース: の上)

例 2: size() 関数

C++




// C++ program to illustrate the size() function> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>地図; // マップにいくつかの値を挿入します。map['one'] = 1; マップ['two'] = 2; マップ['three'] = 3; // マップ cout のサイズを出力します<< 'Size of map: ' << map.size() << endl; return 0; }>

>

>

春と春のMVC
出力

Size of map: 3>

上記のメソッドの複雑さ:

時間計算量: ○(1)。

例 3: マップの実装

CPP




// CPP Program to demonstrate the implementation in Map> // divyansh mishra -->divyanshmishra101010>> #include> #include> #include> using> namespace> std;> int> main()> {> >// empty map container> >map<>int>,>int>>gquiz1;>>' // insert elements in random order> >gquiz1.insert(pair<>int>,>int>>(1, 40));>> gquiz1.insert(pair<>int>,>int>>(2, 30));>> gquiz1.insert(pair<>int>,>int>>(3, 60));>> gquiz1.insert(pair<>int>,>int>>(4, 20));>> gquiz1.insert(pair<>int>,>int>>(5, 50));>>' gquiz1.insert(pair<>int>,>int>>(6, 50));>> // another way of inserting a value in a map> >gquiz1[7] = 10;> >// printing map gquiz1> >map<>int>,>int>>::反復子 itr;>> >cout <<>' The map gquiz1 is : '>;> >cout <<>' KEY ELEMENT '>;> >for> (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr) {> >cout <<>' '> ' ' << ' '; } cout << endl; // assigning the elements from gquiz1 to gquiz2 map gquiz2(gquiz1.begin(), gquiz1.end()); // マップのすべての要素を出力します gquiz2 cout<< ' The map gquiz2 after' << ' assign from gquiz1 is : '; cout << ' KEY ELEMENT '; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } cout << endl; // remove all elements up to // element with key=3 in gquiz2 cout << ' gquiz2 after removal of' ' elements less than key=3 : '; cout << ' KEY ELEMENT '; gquiz2.erase(gquiz2.begin(), gquiz2.find(3)); for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } // remove all elements with key = 4 int num; num = gquiz2.erase(4); cout << ' gquiz2.erase(4) : '; cout << num << ' removed '; cout << ' KEY ELEMENT '; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } cout << endl; // lower bound and upper bound for map gquiz1 key = 5 cout << 'gquiz1.lower_bound(5) : ' << ' KEY = '; cout ' '; cout << ' ELEMENT = ' << endl; cout << 'gquiz1.upper_bound(5) : ' << ' KEY = '; cout ' '; cout << ' ELEMENT = ' << endl; return 0; }>

>

>

出力

The map gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 4 20 5 50 6 50 7 10 The map gquiz2 after assign from gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 4 20 5 50 6 50 7 10 gquiz2 after remov...>

上記のメソッドの複雑さ:

時間計算量: O(n log(n)) (n はマップのサイズ)
補助スペース: の上)

例 4: 整数のマップの実装

C++




// C++ program to implement map container> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>地図; // マップにいくつかの値を挿入します。map['one'] = 1; マップ['two'] = 2; マップ['three'] = 3; // マップ cout の値を出力します<< 'Key: one, Value: ' << map['one'] << endl; cout << 'Key: two, Value: ' << map['two'] << endl; cout << 'Key: three, Value: ' << map['three'] << endl; // Check if a key is in the map if (map.count('four')>0) { コウト<< 'Key 'four' is in the map' << endl; } else { cout << 'Key 'four' is not in the map' << endl; } return 0; }>

>

>

出力

Key: one, Value: 1 Key: two, Value: 2 Key: three, Value: 3 Key 'four' is not in the map>

std::map の全関数のリスト

次の表には、std::map クラス内で定義されているすべての関数が含まれています。

関数

意味

マップ::挿入()

特定のキーを持つ要素をマップ コンテナに挿入 –> O(log n)

マップ::カウント()

マップ内でキーと値が「g」の要素に一致した数を返します。 –> O(log n)

マップの等しい範囲()

ペアのイテレータを返します。このペアは、k と同等のキーを持つコンテナ内のすべての要素を含む範囲の境界を指します。

マップ消去()

コンテナから要素を消去するために使用 –> O(log n)

マップのレンド()

マップ内の最初のキーと値のペア (その逆端とみなされる) の直前の理論的要素を指す逆反復子を返します。

マップ rbegin()

マップの最後の要素を指す逆反復子を返します。

マップ検索()

マップ内でキーと値「g」を持つ要素へのイテレータが見つかった場合はそのイテレータを返し、それ以外の場合はエンドへのイテレータを返します。

crbegin() と crend() をマップします。

crbegin() は、マップ コンテナーの最後の要素を参照する定数逆反復子を返します。 crend() は、マップ内の最初の要素の前にある理論上の要素を指す定数逆反復子を返します。

javaを設定する
マップ cbegin() と cend()

cbegin() は、マップ コンテナーの最初の要素を参照する定数反復子を返します。 cend() は、マルチマップ内の最後の要素に続く理論上の要素を指す定数反復子を返します。

マップ emplace()

キーとその要素をマップ コンテナーに挿入します。

マップの最大サイズ()

マップコンテナが保持できる要素の最大数を返します –> O(1)

マップの上限()

キーと値が「g」のマップされた値と同等の最初の要素への反復子を返すか、マップ内のキーと値が「g」の要素の後に確実に配置されます。

マップ演算子=

コンテナのコンテンツを別のコンテナに割り当て、現在のコンテンツを置き換えます。

マップ lower_bound()

キーと値が「g」のマップされた値に等しい最初の要素へのイテレータを返すか、マップ内でキーと値が「g」の要素の前に絶対に配置されない反復子を返します –> O(log n)

マップ emplace_hint()

指定されたヒントを使用して、キーとその要素をマップ コンテナーに挿入します。

マップ値_comp()

マップ内の要素の順序を決定するオブジェクトを返します (デフォルトでは「<」)。

マップ key_comp()

マップ内の要素の順序を決定するオブジェクトを返します (デフォルトでは「<」)。

マップ::サイズ()

マップ内の要素の数を返します。

マップ::空()

マップが空かどうかを返します

map::begin() と end()

begin() は、マップ内の最初の要素へのイテレータを返します。 end() は、マップ内の最後の要素に続く理論上の要素への反復子を返します。

マップ::演算子[]

この演算子は、演算子内で指定された位置に存在する要素を参照するために使用されます。

マップ::クリア()

マップからすべての要素を削除します。

map::at() と map::swap()

at() 関数は、キー k に関連付けられた要素への参照を返すために使用されます。 swap() 関数は 2 つのマップの内容を交換するために使用されますが、マップはサイズが異なっていても同じタイプである必要があります。