我面临着散列问题__uint128_t。以下是我的代码:
#include <iostream>\n\nint main () {\n __uint128_t var = 1;\n std::cout << std::hash<__uint128_t> () (var) << "\\n";\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n我收到的错误如下:
\ntest.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 | ^\nRun Code Online (Sandbox Code Playgroud)\n我如何获得 的哈希值__uint128_t?(可能是一个非常基本的问题,但我已经被困在这里一段时间了)。另外,我想知道这个错误的含义。提前致谢。
查看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)
注意未经测试或编译。