• 締切済み

C++でのGMP

あるプログラムをC++でつくろうとしています。 GMPを使おうと考えているのですが、mpz_tとmpz_classの違いがわかりません。 それぞれのメリット、デメリット知りたいです。

みんなの回答

回答No.1

C++が使えるのにわざわざCの書き方をしたい理由がわかりません。 C++ならオペレーターのオーバーロードがあるので、かなり直感的にプログラムをかけます。対象の型やメモリーについてもあまり意識する必要がありません。 例えば、1から10までの積を計算するプログラムを書いてみましょう。 C++だとこうです。 #include <iostream> #include <gmpxx.h> int main(void) { mpz_class v("1"); for (int i = 1; i < 10; i++) { v *= i; } std::cout << v.get_str() << std::endl; return 0; } これがCなら、こんな感じです。 #include <stdio.h> #include <stdlib.h> #include <gmp.h> int main(void) { mpz_t v; mpz_init(v); mpz_set_si(v, 1); for (int i = 1; i < 10; i++) { mpz_mul_si(v, v, i); } char* result = mpz_get_str(NULL, 10, v); printf("%s\n", result); free(result); return 0; }

関連するQ&A

専門家に質問してみよう