__uint128_t 的 std::hash

Ame*_*nde 2 c++ c++11

我面临着散列问题__uint128_t。以下是我的代码:

\n
#include <iostream>\n\nint main () {\n    __uint128_t var = 1;\n    std::cout << std::hash<__uint128_t> () (var) << "\\n";\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我收到的错误如下:

\n
test.cpp: In function \xe2\x80\x98int main()\xe2\x80\x99:\ntest.cpp:5:40: error: use of deleted function \xe2\x80\x98std::hash<__int128 unsigned>::hash()\xe2\x80\x99\n    5 |     size_t h = std::hash<__uint128_t> () (var);\n      |                                        ^\n
Run Code Online (Sandbox Code Playgroud)\n

我如何获得 的哈希值__uint128_t?(可能是一个非常基本的问题,但我已经被困在这里一段时间了)。另外,我想知道这个错误的含义。提前致谢。

\n

ceo*_*ron 6

查看https://en.cppreference.com/w/cpp/utility/hash上的文档。您必须自己编写。

以下是基本 __uint128_t 哈希函数的一些代码:

namespace std {
template<>
struct hash<__uint128_t> {
    size_t operator()(__uint128_t var) const {
        return std::hash<uint64_t>{}((uint64_t)var ^ (uint64_t)(var >> 64));
    }
};
}
Run Code Online (Sandbox Code Playgroud)

注意未经测试或编译。