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

C++STLのマップおよびマルチマップの降順


一般に、マップおよびマルチマップマップのデフォルトの動作は、要素を昇順で格納することです。ただし、大きい関数を使用すると、要素を降順で格納できます。

降順の地図:

関数はここで使用されます-

  • m ::find() –見つかった場合は、マップ内のキー値「b」を持つ要素にイテレータを返します。それ以外の場合は、終了するイテレータを返します。

  • m ::Erase() –マップからキー値を削除します。

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

  • m insert() –マップコンテナに要素を挿入します。

  • mサイズ() –マップコンテナ内の要素の数を返します。

  • m count() –マップ内のキー値が「a」または「f」の要素との一致数を返します。

サンプルコード

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main () {
   map<char, int,greater <int>> m;
   map<char, int>::iterator it;
   m.insert (pair<char, int>('a', 10));
   m.insert (pair<char, int>('b', 20));
   m.insert (pair<char, int>('c', 30));
   m.insert (pair<char, int>('d', 40));
   cout<<"Size of the map: "<< m.size() <<endl;
   cout << "map contains:\n";
   for (it = m.begin(); it != m.end(); ++it)
      cout << (*it).first << " => " << (*it).second << '\n';
   for (char c = 'a'; c <= 'd'; c++) {
      cout << "There are " << m.count(c) << " element(s) with key " << c << ":";
      map<char, int>::iterator it;
      for (it = m.equal_range(c).first; it != m.equal_range(c).second; ++it)
         cout << ' ' << (*it).second;
      cout << endl;
   }
   if (m.count('a'))
      cout << "The key a is present\n";
   else
      cout << "The key a is not present\n";
   if (m.count('f'))
      cout << "The key f is present\n";
   else
      cout << "The key f is not present\n";
      it = m.find('b');
      m.erase (it);
      cout<<"Size of the map: "<<m.size()<<endl;
   cout << "map contains:\n";
   for (it = m.begin(); it != m.end(); ++it)
      cout << (*it).first << " => " << (*it).second << '\n';
   return 0;
}

出力

Size of the map: 4
map contains:
d => 40
c => 30
b => 20
a => 10
There are 1 element(s) with key a: 10
There are 1 element(s) with key b: 20
There are 1 element(s) with key c: 30
There are 1 element(s) with key d: 40
The key a is present
The key f is not present
Size of the map: 3
map contains:
d => 40
c => 30
a => 10

降順のマルチマップ:

ここで使用される関数:

  • mm ::find() –マルチマップでキー値「b」が見つかった場合はその要素にイテレータを返します。それ以外の場合は終了するイテレータを返します。

  • mm ::Erase() –マルチマップからキー値を削除します。

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

  • mm insert() –マルチマップコンテナに要素を挿入します。

  • mmサイズ() –マルチマップコンテナ内の要素の数を返します。


サンプルコード

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main () {
   multimap<char, int,greater <char>> mm;
   multimap<char, int>::iterator it;
   mm.insert (pair<char, int>('a', 10));
   mm.insert (pair<char, int>('b', 20));
   mm.insert (pair<char, int>('a', 30));
   mm.insert (pair<char, int>('b', 40));
   cout<<"Size of the multimap: "<< mm.size() <<endl;
   cout << "multimap contains:\n";
   for (it = mm.begin(); it != mm.end(); ++it)
      cout << (*it).first << " => " << (*it).second << '\n';
   for (char c = 'a'; c <= 'd'; c++) {
      cout << "There are " << mm.count(c) << " elements with key " << c << ":";
      map<char, int>::iterator it;
    for (it = mm.equal_range(c).first; it != mm.equal_range(c).second; ++it)
      cout << ' ' << (*it).second;
      cout << endl;
   }
   if (mm.count('a'))
      cout << "The key a is present\n";
   else
      cout << "The key a is not present\n";
   if (mm.count('f'))
      cout << "The key f is present\n";
   else
      cout << "The key f is not present\n";
   it = mm.find('b');
   mm.erase (it);
   cout<<"Size of the multimap: "<<mm.size()<<endl;
   cout << "multiap contains:\n";
   for (it = mm.begin(); it != mm.end(); ++it)
      cout << (*it).first << " => " << (*it).second << '\n';
   return 0;
}

出力

Size of the multimap: 4
multimap contains:
b => 20
b => 40
a => 10
a => 30
There are 2 elements with key a: 10 30
There are 2 elements with key b: 20 40
There are 0 elements with key c:
There are 0 elements with key d:
The key a is present
The key f is not present
Size of the multimap: 3
multiap contains:
b => 40
a => 10
a => 30

  1. C ++ STLでemplace()をマップします

    この記事では、C++STLでのmap::emplace()関数の動作、構文、および例について説明します。 C ++ STLのマップとは何ですか? マップは連想コンテナであり、キー値とマップされた値の組み合わせによって形成された要素を特定の順序で格納するのを容易にします。マップコンテナでは、データは常に関連するキーを使用して内部的に並べ替えられます。マップコンテナの値には、一意のキーからアクセスします。 map ::emplace()とは何ですか? map ::emplace()は、ヘッダーファイルの下にある関数です。この関数は、要素を作成して、関連付けられたマップコンテナに挿入します。

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

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