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

C++STLのmap::at()およびmap ::swap()


この記事では、C++STLでのmap::at()およびmap ::swap()関数の動作、構文、および例について説明します。

C ++ STLのマップとは何ですか?

マップは連想コンテナであり、キー値とマップされた値の組み合わせによって形成された要素を特定の順序で格納するのを容易にします。マップコンテナでは、データは常に関連するキーを使用して内部的に並べ替えられます。マップコンテナの値には、一意のキーからアクセスします。

map ::at()とは何ですか?

map ::at()関数は、C ++ STLに組み込まれている関数であり、 ヘッダーファイルで定義されています。 at()は、関連付けられたマップコンテナの特定の要素にアクセスするために使用されます。この関数は、キーに関連付けられている特定の値への参照を返します。

キーがマップコンテナのどのキーとも一致しない場合、関数はout_of_range例外をスローします。

構文

map_name.at(key& k);

パラメータ

この関数は1つのパラメータを受け入れます。つまり

  • k −これは私たちが参照したいキーです。

戻り値

この関数は、探しているキーkに関連付けられた値への参照を返します。

入力

std::map<int> mymap;
mymap.insert({‘a’, 10});
mymap.insert({‘b, 20});
mymap.insert({‘c, 30});
mymap.at(‘b’);

出力

b:20

#include <bits/stdc++.h>
using namespace std;
int main() {
   map<int, int> TP_1;
   map<int, int> TP_2;
   TP_1[1] = 10;
   TP_1[2] = 20;
   TP_1[3] = 30;
   TP_1[4] = 40;
   TP_2[5] = 50;
   TP_2[6] = 60;
   TP_2[7] = 70;
   cout<<"Elements at TP_1[1] = "<< TP_1.at(1) << endl;
   cout<<"Elements at TP_1[2] = "<< TP_1.at(2) << endl;
   cout<<"Elements at TP_1[3] = "<< TP_1.at(3) << endl;
   cout<<"\nElements at TP_2[7] = "<< TP_2.at(7) << endl;
   cout<<"Elements at TP_2[5] = "<< TP_2.at(5) << endl;
   return 0;
}

出力

Elements at TP_1[1] = 10
Elements at TP_1[2] = 20
Elements at TP_1[3] = 30
Elements at TP_1[7] = 70
Elements at TP_1[5] = 50

map ::swap()とは何ですか?

map ::swap()関数は、C ++ STLに組み込まれている関数であり、 ヘッダーファイルで定義されています。 swap()は、2つのマップコンテナのコンテンツを交換するために使用されます。この関数は、両方のマップコンテナのサイズに関係なく、2つのマップコンテナの値を交換します。

この関数が呼び出されると、別のマップコンテナーであるパラメーターを受け取り、その内容を関連するコンテナーと交換します。

構文

map_name.swap(map& map_name2);

パラメータ

この関数は1つのパラメータを受け入れます。つまり

  • map_name2 −これは、関連するマップコンテナとデータを交換するもう1つのマップコンテナのオブジェクトです。

戻り値

この関数は何も返しません。

入力

std::map<int> odd, eve;
odd.insert({‘a’, 1});
odd.insert({‘b’, 3});
odd.insert({‘c’, 5});
eve.insert({‘d’, 2});
eve.insert({‘e’, 4});
eve.insert({‘f’, 6});
odd.swap(eve);

出力

Odd: d: 2 e:4 f:6
Eve: a:1 b:3 c:5

#include <bits/stdc++.h>
using namespace std;
int main() {
   map<int, int> TP_1;
   map<int, int> TP_2;
   TP_1[1] = 10;
   TP_1[2] = 20;
   TP_1[3] = 30;
   TP_1[4] = 40;
   TP_2[5] = 50;
   TP_2[6] = 60;
   TP_2[7] = 70;
   swap(TP_1, TP_2);
   cout<<"Elements of TP_1 after swap:\n"<< "\tKEY\tELEMENT\n";
   for (auto i = TP_1.begin(); i!= TP_1.end(); i++) {
      cout << "\t" << i->first << "\t" << i->second << '\n';
   }
   cout << "Elements of TP_2 after swap:\n"<< "\tKEY\tELEMENT\n";
   for (auto i = TP_2.begin(); i!= TP_2.end(); i++) {
      cout << "\t" << i->first << "\t" << i->second << '\n';
   }
   return 0;
}

出力

Elements of TP_1 after swap:
KEY    ELEMENT
5       50
6       60
7       70
Elements of TP_2 after swap:
KEY    ELEMENT
1       10
2       20
3       30
4       40

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

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

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

    一般に、マップおよびマルチマップマップのデフォルトの動作は、要素を昇順で格納することです。ただし、大きい関数を使用すると、要素を降順で格納できます。 降順の地図: 関数はここで使用されます- m ::find() –見つかった場合は、マップ内のキー値「b」を持つ要素にイテレータを返します。それ以外の場合は、終了するイテレータを返します。 m ::Erase() –マップからキー値を削除します。 m ::equal_range() –ペアのイテレータを返します。ペアは、キーと同等のキーを持つコンテナ内のすべての要素を含む範囲の境界を指します。 m insert