gpt4 book ai didi

c++ - 我的 std::hash for std::tuples...有什么改进吗?

转载 作者:行者123 更新时间:2023-11-30 02:56:54 26 4
gpt4 key购买 nike

<分区>

有些人可能已经注意到 std::hash 不支持元组。所以我添加了一个重载,它看起来比我到目前为止看到的解决方案“更好”。有人有进一步减少这段代码的想法吗?请注意,这是一个编译器 killer !唯一可以编译它的是“Clang 3.2”......英特尔编译器 13.1 没有获得特化并不断告诉“C++ 标准不支持哈希 blabla”。我们不需要谈论原始的 Microsoft 编译器,对吧。

顺便说一句,我的解决方案支持递归元组,如 std::tuple<std::tuple<int,int>,int>所以我不确定这是否也适用于我今天看到的现有解决方案。

namespace std
{
template<typename... TTypes>
class hash<std::tuple<TTypes...>>
{
private:
typedef std::tuple<TTypes...> Tuple;

template<int N>
size_t operator()(Tuple value) const { return 0; }

template<int N, typename THead, typename... TTail>
size_t operator()(Tuple value) const
{
constexpr int Index = N - sizeof...(TTail) - 1;
return hash<THead>()(std::get<Index>(value)) ^ operator()<N, TTail...>(value);
}

public:
size_t operator()(Tuple value) const
{
return operator()<sizeof...(TTypes), TTypes...>(value);
}
};
}

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