Поделиться через


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

См. также

Ссылки

<unordered_map>

Класс unordered_map

unordered_map::find

unordered_map::insert

Другие ресурсы

Члены <unordered_map>