sizeinbase for mpz_class in GNU GMP

sizeinbase for mpz_class in GNU GMP

本文关键字:in GNU GMP class for mpz sizeinbase      更新时间:2023-10-16

在 C 中,我们有mpz_t,我们可以通过以下方式访问base中的大小

size_t mpz_sizeinbase (const mpz_t op, int base)

在mpz_class,我试过

counter.sizeinbase(2);

那行不通。

error: ‘mpz_class {aka class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>}’ has no member named ‘sizeinbase’
      size_t size = (counter.sizeinbase(2) + CHAR_BIT-1) / CHAR_BIT;

我需要使用 mpz_class 来简化代码以进行unordered_map

是否有类似的mpz_class功能或解决方法?

使用 get_mpz_t 方法访问包装的mpz_t值。

mpz_class x = ...;
size_t xbits = mpz_sizeinbase(x.get_mpz_t(), 2);

至少这在 MPIR 中有效,我认为它在 GMP 中也有效。