C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++ STLでマップ(またはunordered_map)をトラバースする


ここでは、マップコンテナとC++での使用について説明します。マップは、ハッシュマップ方式で要素を格納する連想コンテナとして定義されます。各要素はキーと値に関連付けられています。 2つのマップされた値が同一のキーを持つことはできません。これらは、C++のマップコンテナ内に存在するいくつかの基本的なメソッドです。

begin():これはマップの最初の要素にイテレータを返します。

end() −これにより、マップの最後の要素に続く理論要素にイテレータが返されます。

size() −これはマップ内の要素の数を返します。

max_size() −これは、マップが保持できる要素の最大数を返します。

empty() −これは、マップが空であるかどうかを返します。

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
int main() {
   int A[] = { 2, 2, 3, 2, 2, 4, 5, 4 };
   int num = sizeof(A) / sizeof(A[0]);
   map<int, int> my_map;
   for (int p = 0; p < num; p++)
      my_map[A[p]]++;
   cout <<"Item Frequency"<< endl;
   for (auto p : my_map)
      cout << p.first <<" : "<< p.second << endl;
}

出力

Item Frequency
2 : 4
3 : 1
4 : 2
5 : 1

unordered_map C++STLに存在する別のタイプのマップコンテナです。これは、キーと値のペアの組み合わせによって形成された要素を収集または格納する関連コンテナです。キーは、値を一意に識別するために使用されます。この場合、キーと値の両方を事前定義またはユーザー定義の任意のタイプにすることができます。

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
int main() {
   int A[] = { 2, 2, 3, 2, 2, 4, 5, 4 };
   int num = sizeof(A) / sizeof(A[0]);
   unordered_map<int, int> my_map;
   for (int p = 0; p < num; p++)
      my_map[A[p]]++;
   cout <<Item Frequency"<< endl;
   for (auto p : my_map)
      cout << p.first <<" : "<< p.second << endl;
}

出力

Item Frequency
5 : 1
4 : 2
2 : 4
3 : 1

  1. C++STLでのセットとマップ

    Setは抽象データ型であり、要素の値によって要素が識別されるため、各要素は一意である必要があります。要素の値は、セットに追加されると変更できませんが、その要素の変更された値を削除して追加することはできます。 マップは、マップされた方法で要素を格納する連想コンテナです。各要素には、キー値とマップされた値があります。 2つのマップされた値が同じキー値を持つことはできません。 したがって、上記から明らかなように、setには唯一のキーが含まれ、mapにはキーを持つ値が含まれ、どちらも一意でソートされた値を持つ必要があります。 順序付けされていない要素と並べ替えられていない要素には、unorder

  2. STLにマップを実装するC++プログラム

    マップは、マップされた方法で要素を格納する連想コンテナです。各要素には、キー値とマップされた値があります。 2つのマップされた値が同じキー値を持つことはできません。 ここで使用される関数: m ::find()–見つかった場合は、マップ内のキー値「b」を持つ要素にイテレータを返します。それ以外の場合は、終了するイテレータを返します。 m ::Erase()–マップからキー値を削除します。 m ::equal_range()–ペアのイテレータを返します。ペアは、キーと同等のキーを持つコンテナ内のすべての要素を含む範囲の境界を指します。 m insert()–マップコンテ