工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

印刷例を使用した C++ 標準テンプレート ライブラリ (STL) のマップ

std::map とは?

C++ では、MAP アイテムをマップ形式で格納する連想コンテナです。マップ内の各アイテムは、キー値とマップされた値で構成されます。 2 つのマップされた値が同じキー値を共有することはできません。

キー値は、要素を並べ替えて一意に識別するのに適しています。マップされた値は、キーに関連付けられたコンテンツを格納するためのものです。この 2 つは型が異なる場合がありますが、メンバー型は両方を組み合わせたペア型を介してそれらを組み合わせます。

この C++ チュートリアルでは、次のことを学びます:

std::map を使用する理由

マップを使用する理由は次のとおりです:

構文:

std::map を宣言するには、次の構文を使用します:

std::map<key_datatype, value_datatype>map_name; 

例:

map<string, int> my_map; 

my_map という名前のマップを宣言しました。マップには key として文字列が含まれます としてのデータ型と整数

メンバーの種類:

メンバー関数は、次のメンバー型をパラメーターまたは戻り値の型として使用できます:

組み込み関数

std::map には組み込み関数が付属しています。これらのいくつかは次のとおりです:

マップ要素の繰り返し

マップ要素を反復処理できます。イテレータを作成して、これを使用するだけです。
例:

例 1:

#include <iostream>
#include <string>
#include <map> 

using namespace std;
int main() {

	map<int, string> Students;

	Students.insert(std::pair<int, string>(200, "Alice"));

	Students.insert(std::pair<int, string>(201, "John"));

	cout << "Map size is: " << Students.size() << endl;

	cout << endl << "Default map Order is: " << endl;

	for (map<int, string>::iterator it = Students.begin(); it != Students.end(); ++it) {

		cout << (*it).first << ": " << (*it).second << endl;
	}
}

出力:

コードのスクリーンショットは次のとおりです:

コードの説明:

<オール>
  • iostream ヘッダー ファイルをコードにインクルードして、その関数を使用します。
  • 文字列ヘッダー ファイルをコードにインクルードして、その関数を使用します。
  • マップ ヘッダー ファイルをコードにインクルードして、その関数を使用します。
  • コードに std 名前空間を含めて、呼び出さずにそのクラスを使用します。
  • main() 関数を呼び出します。 { は、関数の本体の開始を示します。
  • キーが整数、値が文字列である、Students という名前のマップを作成します。
  • 生徒のマップに値を挿入します。キー 200 と値 Alice がマップに挿入されます。
  • 生徒のマップに値を挿入します。キー 201 と値 John がマップに挿入されます。
  • size() 関数を使用して、Students という名前のマップのサイズを取得します。これは 2 を返します。
  • コンソールにテキストを出力します。
  • for ループを使用して it という名前の反復子を作成し、Students という名前のマップの要素を反復処理します。
  • マップの学生の値をコンソールに出力します。
  • for ループの本体の終了
  • main() 関数の本体の終わり。
  • std::map へのデータの挿入

    insert() 関数を使用して std::map に項目を入力できます。 std::map キーは一意でなければならないことに注意してください。

    そのため、最初に各キーがマップに存在するかどうかを確認します。存在する場合、エントリは挿入されませんが、既存のエントリのイテレータが返されます。存在しない場合は、エントリが挿入されます。

    関数には次のバリエーションがあります:

    insert_or_assing() 関数は insert() 関数と同じように機能しますが、指定されたキーがマップに既に存在する場合、その値は変更されます。

    例 2:

    #include <map>
    #include <iostream>
    
    using namespace std;
    
    int main() {
    
    	map<int, int> m{ {1,3} , {2,4} , {3,5} };
    
    	m.insert({ 5, 6 });
    	m.insert({ 1, 8 });
    
    	m.insert_or_assign(1, 6);  
    	
    	cout << "Key\tElement\n";
    	for (auto itr = m.begin(); itr != m.end(); ++itr) {
    		cout << itr->first << '\t' << itr->second << '\n';
    	}
    	return 0;
    }
    

    出力:

    コードのスクリーンショットは次のとおりです:

    コードの説明:

    <オール>
  • マップ ヘッダー ファイルをコードにインクルードして、その関数を使用します。
  • iostream ヘッダー ファイルをコードにインクルードして、その関数を使用します。
  • コードに std 名前空間を含めて、呼び出さずにそのクラスを使用します。
  • main() 関数を呼び出します。 { は、関数の本体の開始を示します。
  • m という名前で、キーが整数、値が整数のマップを作成します。マップに 3 つのエントリが作成されました。
  • 新しいエントリをマップに挿入します m. 5 のキーと 6 の値がマップに挿入されます。
  • 既存のキーにエントリを作成しようとしています。キー 1 は既にマップに存在するため、エントリは作成されません。
  • insert_or_assign() 関数を使用して、既存のエントリを挿入または変更します。キー 1 は既に存在するため、その値は 6 に変更されます。
  • コンソールにテキストを出力します。 「\t」文字は横方向のスペースを作成し、「\n」文字はマウス カーソルを次の行に移動します。
  • for ループを使用して itr という名前の反復子を作成し、m という名前のマップの要素を反復処理します。
  • マップ m の値をコンソールに出力します。 「\t」文字は、各キーとそれに対応する値の間に水平スペースを作成します。対照的に、「\n」文字は、反復ごとにマウス カーソルを次の行に移動します。
  • for a ループの本体の終了
  • プログラムは、正常終了時に値を返さなければなりません。
  • main() 関数の本体の終わり。
  • 地図で検索

    find() 関数を使用して、マップ内の要素をキーで検索できます。キーが見つからない場合、関数は std::map::end を返します。それ以外の場合は、検索された要素の反復子が返されます。

    例 2:

    #include <iostream>
    #include <string>
    #include <map> 
    using namespace std;
    int main() {
    	map<int, string> Students;
    	Students.insert(std::pair<int, string>(200, "Alice"));
    	Students.insert(std::pair<int, string>(201, "John"));
    	std::map<int, string>::iterator it = Students.find(201);
    	if (it != Students.end()) {
    		std::cout << endl << "Key 201 has the value: => "<< Students.find(201)->second << '\n';
    	}
    }
    

    出力:

    コードのスクリーンショットは次のとおりです:

    コードの説明:

    <オール>
  • iostream ヘッダー ファイルをコードにインクルードして、エラーを発生させずに関数を使用します。
  • 文字列ヘッダー ファイルをコードにインクルードして、エラーを発生させずにその関数を使用します。
  • マップ ヘッダー ファイルをコードにインクルードして、エラーを発生させずにその関数を使用します。
  • コードに std 名前空間を含めて、呼び出さずにそのクラスを使用します。
  • main() 関数を呼び出します。 { は、main() 関数の本体の開始を示します。
  • キーが整数と値の文字列である、Students という名前のマップを作成します。
  • 生徒のマップに値を挿入します。キー 200 と値 Alice がマップに挿入されます。
  • 生徒のマップに値を挿入します。キー 201 と値 John がマップに挿入されます。
  • キー 201 に関連付けられた値を探します。
  • if ステートメントを使用して、キーの値が見つかったかどうかを確認します。
  • キーの値をコンソールのテキストと一緒に出力します。
  • if ステートメントの本文の終わり
  • main() 関数の本体の終わり。
  • 地図からのデータの削除

    erase() 関数を使用して、マップから値を削除できます。削除する要素を指す反復子を作成するだけです。その後、反復子が erase() 関数に渡されます。

    例 3:

    #include <iostream>
    #include <string>
    #include <map>
    
    using namespace std;
    int main() {
    
    	map<std::string, int> my_map;
    
    	my_map.insert(std::make_pair("cow", 1));
    
    	my_map.insert(std::make_pair("cat", 2));
    
    	my_map["lion"] = 3;
    
    	map<std::string, int>::iterator it = my_map.find("cat");
    
    	my_map.erase(it);
    
    	for (map<string, int>::iterator it = my_map.begin(); it != my_map.end(); ++it)
    
    		cout << (*it).first << ": " << (*it).second << endl;
    
      return 0;
    }
    

    出力:

    コードのスクリーンショットは次のとおりです:

    コードの説明:

    <オール>
  • iostream ヘッダー ファイルをコードにインクルードして、その関数を使用します。
  • 文字列ヘッダー ファイルをコードにインクルードして、その関数を使用します。
  • マップ ヘッダー ファイルをコードにインクルードして、その関数を使用します。
  • コードに std 名前空間を含めて、呼び出さずにそのクラスを使用します。
  • main() 関数を呼び出します。 { は、main() 関数の本体の開始を示します。
  • キーが文字列で値が整数である my_map という名前のマップを作成します。
  • マップ my_map に値を挿入します。 Cow のキーと 1 の値がマップに挿入されます。
  • マップ my_map に値を挿入します。 Cat のキーと 2 の値がマップに挿入されます。
  • ライオンのキーを持つマップ my_map に値 3 を追加します。
  • マップ my_map を反復してキー cat を探すイテレータを作成します。
  • 反復子が指す要素を削除します。
  • イテレータを使用して、マップ my_map の要素を最初から最後まで繰り返します。
  • マップ my_map の内容をコンソールに出力します。
  • プログラムは、正常終了時に出力を返す必要があります。
  • main() 関数の本体の終わり。
  • まとめ:


    C言語

    1. C 標準ライブラリ関数
    2. C++ の演算子と例:型とプログラムとは
    3. C++ do…while ループと例
    4. C++ Switch Case ステートメントと EXAMPLE
    5. 例による配列の C++ 動的割り当て
    6. C++ ポインタと例
    7. C++ 演算子のオーバーロードと例
    8. C++ 構造体と例
    9. C++ の std::list と例
    10. C++ 関数とプログラム例
    11. 構造体とクラスの違い:C++ の例で説明