为什么我不能在 GMP 中将向量与 mpz_t 一起使用?

Why can't I use vector with mpz_t in GMP?

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

这是我的代码:

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]);
  // }

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

至于第一个选项,it already exists中的mpz_class.

why i can't use vector with mpz_t in gmp?

mpz_t 是数组类型的 typedef。 (来自this question的回答):数组不可复制构造且不可赋值,所以你不能做std::vector<int[1]>.