GMP mpz_class数组不可用?

时间:2013-08-11 22:44:52

标签: c++ gmp

我想动态分配mpz_class数组。

mpz_class *arr = new mpz_class[10];

这一行给了我错误:

for(mpz_class i=0; i<10; i++) arr[i]=0;

它说我mpz_classarr[]。为什么?如果我想分配一个非常大的数组怎么办?我必须使用i.get_ui()吗?

2 个答案:

答案 0 :(得分:1)

使用任意精度整数作为数组索引是没用的,因为内存位置指针仅限于机器的内存量及其CPU的最高整数标准,现在这些是32或64位。

类不能用作数组索引。

如果必须使用mpz_class中存储的值作为数组索引,则只需使用mpz_class::get_ui();将值作为unsigned int返回。

示例:

mpz_class size = 10;
mpz_class *arr = new mpz_class[size.get_ui()];
for(mpz_class i=0; i<size.get_ui(); i++) arr[i.get_ui()] = 0;
delete[size.get_ui()] arr;

答案 1 :(得分:0)

for(mpz_class i=0; i<10; i++) arr[i]=0;
  // ^^^^^^^^ int ?

您是不是要为迭代变量int输入i

另外,你为什么要做arr[i] = 0;?这将松开之前指向通过new[]获取的内存位置,并导致内存泄漏。