次の方法で共有


unordered_map::operator[]

指定したキーを持つ要素を検索または挿入します。

Ty& operator[](const Key& keyval);
Ty& operator[](Key&& keyval);

パラメーター

パラメーター

説明

Keyval

検索または挿入するキー値。

戻り値

挿入される要素のデータ値への参照。

解説

引数のキー値が見つからない場合は、データ型の既定値と一緒に挿入されます。

operator[] は、m[_Key] = DataValue を使用してマップ m に要素を挿入するために使用できます。DataValue は、キー値が _Key である要素の mapped_type 値です。

operator[] を使用して要素を挿入した場合、返される参照では、挿入によって既存の要素が変更される、または新しい要素が作成されるかどうかは指示されません。 メンバー関数 find および insert を使用して、挿入前に指定のキーを持つ要素が既に存在するかどうかを確認できます。

使用例

// std__unordered_map__unordered_map_operator_sub.cpp 
// compile with: /EHsc 
#include <unordered_map> 
#include <iostream> 
#include <string>
 
typedef std::unordered_map<char, int> Mymap; 
int main() 
    { 
    Mymap c1; 
 
    c1.insert(Mymap::value_type('a', 1)); 
    c1.insert(Mymap::value_type('b', 2)); 
    c1.insert(Mymap::value_type('c', 3)); 
 
// display contents " [c 3] [b 2] [a 1]" 
    for (Mymap::const_iterator it = c1.begin(); 
        it != c1.end(); ++it) 
        std::cout << " [" << it->first << ", " << it->second << "]"; 
    std::cout << std::endl; 
 
// try to find and fail 
    std::cout << "c1['A'] == " << c1['A'] << std::endl; 
 
// try to find and succeed 
    std::cout << "c1['a'] == " << c1['a'] << std::endl; 
 
// redisplay contents 
    for (Mymap::const_iterator it = c1.begin(); 
        it != c1.end(); ++it) 
        std::cout << " [" << it->first << ", " << it->second << "]"; 
    std::cout << std::endl; 

// insert by moving key
    std::tr1::unordered_map<string, int> c2;
    std::string str("abc");
    std::cout << "c2[std::move(str)] == " << c2[std::move(str)] << std::endl;
    std::cout << "c2["abc"] == " << c2["abc"] << std::endl;
 
    return (0); 
    } 
 
  

解説

このメンバー関数は、unordered_map::insert( unordered_map::value_type(keyval, Ty()) の戻り値として反復子 where を特定します。そのような要素が存在しない場合は、指定されたキーを持つ要素を挿入します。その後、(*where).second への参照を返します。

必要条件

ヘッダー: <unordered_map>

名前空間: std

参照

関連項目

<unordered_map>

unordered_map クラス

unordered_map::find

unordered_map::insert

その他の技術情報

<unordered_map> メンバー