出于好奇,当您可以按值排序时,为什么还要使用散列?比较非常快,因为它比较从 MSB 到 LSB 的字节/肢体,一旦它们不同就返回结果。
您可以使用平台相关mp_limb_t类型访问原始数据。两者mpz_t和mpf_t都有一个mp_limb_t向量存储在 指定的地址,有效肢体的数量由该字段_mp_d的绝对值给出。_mp_size(定义在gmp.h)
当然,如果散列函数依赖于 8 位字节向量,则需要转换肢体向量。mp_limb_t幸运的是,在任何健全的平台上, - -中的位数GMP_LIMB_BITS总是可以被 8 整除。