[STL 注記、2] コンテナ: マップ

記事ディレクトリ

1。概要

百度百科の要約内容は次のとおりです。

マッピングとマルチマッピングにより、特定のタイプのキーのキー セットの存在に基づいて、タイプ T のデータを高速かつ効率的に取得できます。マップの場合、キーは単にコンテナに格納されているメンバーを指します。Map は重複キーをサポートしませんが、multimap は重複キーをサポートします。Map および multimap オブジェクトにはキーと各キーに関連する値が含まれており、キーと値のデータ型が異なるため set とは異なります。セット内のキーと値は Key タイプですが、マップ内のキーと値はペア構造の 2 つのコンポーネントです。

ヘッダーファイルを追加する

#include <map>

一般的なコンストラクターの初期化

    map<string,int> m1=
    {
    
    
        {
    
    "one",1},
        {
    
    "two",2},
        {
    
    "three",3},
    };

2つの共通操作

最初にやるべきことはマップを横断することです

    for(auto iter = m1.begin();iter!=m1.end();++iter)
    {
    
    
        cout << iter->first << " "<< iter->second << endl;
    }

印刷機能に変更

void printMap( map<string,int> &m1)
{
    
    
    for(auto iter = m1.begin();iter!=m1.end();++iter)
    {
    
    
        cout << iter->first << " "<< iter->second << endl;
    }
}

印刷結果は次のとおりです。

one 1
three 3
two 2

挿入方法は以下の通りです。


    m1.insert(pair<string,int>("four",4));

対応するキー値に対応する値を検索します。値が存在しない場合は、デフォルトで 0 が返されます。

    cout << "five " << m1.find("five")->second << endl;
    cout << "one " << m1.find("one")->second << endl;

count はキー値の出現回数をカウントするために使用されます。マップ内に繰り返し要素がないため、計算結果は 0 と 1 のみになります。

次のデモ コードは次のことを示しています。


    map<string,int> m1=
    {
    
    
        {
    
    "one",1},
        {
    
    "two",2},
        {
    
    "three",3},
        {
    
    "one",5},
    };
    m1.insert(pair<string,int>("four",4));
    cout << "one " << m1.find("one")->second << endl;
    cout << m1.count("one") << endl;
    printMap(m1);

印刷結果は次のとおりです。

one 1
1
four 4
one 1
three 3
two 2

size() は、現在のコンテナのサイズをカウントするために使用されます。ベクターの他のコンテナと同様に、あまり詳しく説明しないでください。

empty() は空を判定するために使用され、1 は空、0 は空ではありません。

Erase() は、対応するキー値の内容を消去するために使用されます。

    m1.erase("one");

map は演算子 [] をオーバーロードし、この [key] を使用してキー値に対応する値にすばやくアクセスできます。


    int num = m1["three"];

clear ( ) ; コンテナ内のすべての要素を削除するために使用されます

おすすめ

転載: blog.csdn.net/qq_38753749/article/details/130217310