У меня есть C++ код следующим образом:Могу ли я получить значение из std :: map без сбоев, если ключ не существует?
if(rtstructure.find(varName) != rtstructure.end()) {
rtdef = rtstructure[varName];
}
где rtstructure является станд :: карта с станд :: строка для ключа. Этот код работает, но кажется, что это отходы, чтобы он дважды искал тот же ключ. Если я опускаю случай if вокруг назначения, программа сработает, если varName указывает на ключ, который не существует.
Можно ли в одной операции с картой найти ключ в std :: map и получить его значение, если оно существует, без сбоев, если оно не существует?
Ваша программа обычно не сбой. Вы используете 'map' случайно? Также обратите внимание, что 'map :: find' возвращает итератор, вы можете с радостью использовать понятие« значение »итератора (' second') –
Zeta
Да карта std :: map rtstructure; где rtobject_t - это структура. –
Итак, оператор [] возвращает новый неинициализированный указатель, если ссылается на член, который не существует. –