为什么在GMP中不能用mpz_t做矢量?

问题描述 投票:0回答:1

我不知道为什么这个程序会出错,因为它很简单,但是,如果我不能使用 vector 在GMP中,任务将是如此艰难。

这是我的代码。

vector<mpz_t> elements;
  cout << elements.size() << endl;
  mpz_t a;
  mpz_init(a);
  elements.push_back(a);

这很好用,但没有我的代码好用 vector:

// mpz_t b[10];
  // for (int i = 0; i < 10; i++){
  //   mpz_init(b[i]);
  // }

enter image description here

c++ gmp
1个回答
1
投票

mpz_t 是一个 typedef 到一个数组类型。的向量,而不是一个 mpz_t在C++中,我建议要么封装为 mpz_t 的类中(这也将允许管理内存)或使用指向 mpz_t.

至于第一个选择: 它已经存在 为名 mpz_class.

为什么我不能在gmp中使用mpz_t的向量?

mpz_t 是一个数组类型的类型定义. (来自 这个问题):数组是不可复制构造的,也不可赋值,所以你不能做的是 std::vector<int[1]>.

© www.soinside.com 2019 - 2024. All rights reserved.