我想动态分配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()
吗?
答案 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[]
获取的内存位置,并导致内存泄漏。