1

动机:我想使用bsearch(二进制搜索)快速搜索 121 位非负整数的排序列表(它们都有 121 位,尽管它们可能有前导零)。这些整数太大而无法存储为单独int的 s,依此类推,所以我打算制作它们mpz_t(使用GMP)。

翻阅手册,GMP 没有bsearch等效项(尽管,如果我错了,请纠正我),这导致我:

问题:我们可以使用memcmp或类似的东西来比较两个具有相同位数的非负整数存储为mpz_t?如果是这样,正确的语法是什么?

如果这是可能的,搜索应该是非常有效的。

我也愿意接受有关以下方面的替代建议:(a)用于存储这些 121 位整数的数据结构,允许在 C++ 中进行快速搜索,(b)用于搜索不使用的整数的方法memcmp

4

1 回答 1

2

如果它们只是 121 位整数,为什么不使用本机 128 位 int 扩展: http: //gcc.gnu.org/onlinedocs/gcc/_005f_005fint128.html?这应该快得多,因为您可以避免任何“昂贵”的操作,如 memcpy,所有的比较都应该是一条指令。

于 2012-10-26T03:51:46.510 回答