если такого колюча нет. Пока так делаю, но смущает постоянный вызов find. Может быстрее в try-catch завернуть и при ошибке сетить дефолтное значение?
using Item = map<string, variant<string, double>>;
Item item = {{"a", 1}};
if (item.find("b") == item.end()) {
item["b"] = 0;
}
Можешь find на count заменить. Это почти как contains только имя другое
Норм практика в плюсах с find
Ну и исключения тебе тут ничего не дадут по скорости, а только медленнее сделают
А если просто написать так item["b"]; Ведь по сути, если не найдет ключ, то создатся ключ и стандартное значение будет value_type (x, T ()) https://en.cppreference.com/w/cpp/container/map/operator_at
Дефолтное значение тут будет вариант, держащий пустую строку item.insert(Item::value_type{ "b", {} });
Обсуждают сегодня