0

我想动态分配一个mpz_class数组。

mpz_class *arr = new mpz_class[10];

这一行给了我错误:

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

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

4

2 回答 2

1

使用任意精度整数作为数组索引是没有用的,因为内存位置指针仅限于机器的内存量,而且它是 CPU 的最高整数标准,今天是 32 位或 64 位。

类不能用作数组索引。

如果您必须将存储在 a 中的值mpz_class用作数组索引,则只需使用mpz_class::get_ui();将值作为 a 返回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;
于 2013-08-11T23:35:56.957 回答
0
for(mpz_class i=0; i<10; i++) arr[i]=0;
  // ^^^^^^^^ int ?

你不是说int迭代变量的类型i吗?

还有,你为什么要这样做arr[i] = 0;?这将丢失它之前指向的内存位置new[]并导致内存泄漏。

于 2013-08-11T22:49:37.857 回答