Несуществующий элемент в unordered_map

Рейтинг: 0Ответов: 1Опубликовано: 09.05.2023
  1. Что возвращает test["hello"]?
  2. Что будет, если мы вызовем fun(test["hello"]), но внутри функции fun не будем присваивать значение, а потом вызовем test.find("hello"). У нас найдется элемент? Если найдется, что там будет (нуль, мусор...)?

Код:

void fun(int& val) {
    val = 900;
}

int main()
{      
    std::unordered_map<std::string, int> test;
    fun(test["hello"]);

    return 0;
}

Ответы

▲ 4Принят
  1. test["hello"] вернет ссылку на значение для ключа hello; если такового нет - создаст его со значением по умолчанию (нулем).

  2. Найдется, со значением 0.

Не понимаю, почему бы 1. не почитать об unordered_map в книге или в Интернете, и 2. почему бы не скомпилировать простейший тестовый код и посмотреть, что будет?

#include <string>
#include <iostream>
#include <unordered_map>

using namespace std;

void fun(int& val)
{

    cout << val << endl;
    val = 900;
}

int main()
{      
    std::unordered_map<std::string, int> test;
    fun(test["hello"]);

    cout << test["hello"] << endl;

}