我想动态分配一个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()
吗?
使用任意精度整数作为数组索引是没有用的,因为内存位置指针仅限于机器的内存量,而且它是 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;
for(mpz_class i=0; i<10; i++) arr[i]=0;
// ^^^^^^^^ int ?
你不是说int
迭代变量的类型i
吗?
还有,你为什么要这样做arr[i] = 0;
?这将丢失它之前指向的内存位置new[]
并导致内存泄漏。