我写了这段代码来检查一个 std::map
是否包含特定的键:
template<typename T, typename... Args >
inline bool contains(const std::map<Args...>& map, const T& value) noexcept
{
static_assert(std::is_constructible_v< decltype(map)::key_type , T >);
return map.find(value) != std::end(map);
}
我遇到了以下错误:
``` error: key_type is not a member of const std::map, Query>& ```
`decltype(map)::key_type` 的问题在哪里?
std::is_constructible_v<typename std::map<Args...>::key_type, T>
也可以工作(即我们已经有了地图类型!),但是您的建议更好。 - Lightness Races in OrbitMap
是否确实具有::key_type
。你也可以使用std::find
创建一个通用版本,但不幸的是,对于集合或映射上的std::find
的复杂度没有任何保证... - Holtset
/map
及其unordered_
版本)的可能版本:https://godbolt.org/z/7uXSpU。由于这与问题有些远离,因此没有在答案中包含它。 - Holt