unordered_map::operator[]
Находит или вставляет элемент с указанным ключом.
Ty& operator[](const Key& keyval);
Ty& operator[](Key&& keyval);
Параметры
Параметр |
Описание |
Keyval |
Значение ключа, которое необходимо найти или вставить. |
Возвращаемое значение
Ссылка на значение данных вставленного элемента.
Заметки
Если значение ключа аргумента не найдено, он вставляется вместе со значением по умолчанию для такого типа данных.
operator[] может использоваться для вставки элементов в сопоставление m с помощью m[_Key] = DataValue; где DataValue представляет собой значение mapped_type элемента со значением ключа _Key.
При использовании 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);
}
Заметки
Функция-член определяет итератор where в качестве возвращаемого значения unordered_map::insert( (keyval, Ty())unordered_map::value_type. (Вставляет элемент с указанным ключом, если такого элемента не существует.) Затем возвращает ссылку на (*where).second.
Требования
Заголовок: <unordered_map>
Пространство имен: std