将mpz_class转换为int

use*_*518 2 c++ gmp

使用gmp,我声明:

mpz_class x = 0;
Run Code Online (Sandbox Code Playgroud)

但是现在如果我想用x作为数组的索引,就像这样:

textArray[x];
Run Code Online (Sandbox Code Playgroud)

我收到此错误"错误:'testArray [x]'中'运算符[]'不匹配"

那么我该如何解决这个问题呢?

Zet*_*eta 10

通常operator[]需要一个size_t.您需要mpz_class在兼容类型中转换您的实例:

textArray[x.get_ui()];
Run Code Online (Sandbox Code Playgroud)

请注意,如果x大于std::numeric_limits<unsigned long>::max()(检查),这将导致麻烦x.fits_ulong_p()).请注意,这mpz_class也很可能不太适合该任务.问问自己:索引是否应该是任意大的?

也可以看看: