我有无序 map
:
static unordered_map<int, long> my_map;
auto& result = my_map[i];
如果没有键i
,结果将是0
。
是否可以返回其他值,例如 NULL
或 -MAXINT
?
最佳答案
你可以这样做(不在 map 中插入值):
template <typename Key, typename Value>
Value& get_or(std::unordered_map<Key, Value>& m, const Key& key, Value& default_value)
{
auto it = m.find(key);
if (it == m.end()) {
return default_value;
}
return it->second;
}
或者如果你想在 map 中添加不存在的值:
template <typename Key, typename Value, typename T>
Value& get_or(std::unordered_map<Key, Value>& m, const Key& key, T&& default_value)
{
return m.emplace(key, std::forward<T>(default_value)).first->second;
}
并使用它
int default_value = 42;
auto& result = get_or(my_map, i, default_value);
关于c++ - 如果在 map 中找不到键,则返回其他值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40159732/