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