Когда я хочу убедиться, что запись, которую я хочу использовать, существует, я обычно делаю это.
#include <unordered_map>
struct type { int member; };
std::unordered_map<type> map;
if (map.find(key) != map.end())
map[key].member = 42;
Однако, я думаю, что он выполняет два поиска для key
в хэш-карте. Это кэширует поиск.
#include <unordered_map>
struct type { int member; };
std::unordered_map<type> map;
auto find = map.find(key);
if (find != map.end())
find->second.member = 42;
Первый вариант кажется более выразительным. Это действительно медленнее?