gpt4 book ai didi

c++ - 从 const 映射中读取的惯用 C++

转载 作者:IT老高 更新时间:2023-10-28 22:33:37 24 4
gpt4 key购买 nike

对于 std::map<std::string, std::string> variables ,我想这样做:

BOOST_CHECK_EQUAL(variables["a"], "b");

唯一的问题是,在这种情况下 variablesconst , 所以 operator[]不会工作:(

现在,有几种解决方法;抛弃const , 使用 variables.count("a") ? variables.find("a")->second : std::string()甚至制作一个包装它的函数。在我看来,这些都没有 operator[] 好。 .我应该怎么办?有没有标准的方法(漂亮地)?

编辑: 只是为了说明你们都不想给出的答案:不,在 C++ 中没有方便、美观、标准的方法来做到这一点。我将不得不实现一个支持功能。

最佳答案

template <typename K, typename V>
V get(std::map<K, V> const& map, K const& key)
{
std::map<K, V>::const_iterator iter(map.find(key));
return iter != map.end() ? iter->second : V();
}

根据评论改进实现:

template <typename T>
typename T::mapped_type get(T const& map, typename T::key_type const& key)
{
typename T::const_iterator iter(map.find(key));
return iter != map.end() ? iter->second : typename T::mapped_type();
}

关于c++ - 从 const 映射中读取的惯用 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/152643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com