Несуществующий элемент в unordered_map
- Что возвращает
test["hello"]? - Что будет, если мы вызовем
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;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
test["hello"]вернет ссылку на значение для ключаhello; если такового нет - создаст его со значением по умолчанию (нулем).Найдется, со значением 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;
}