数式を計算する方法、つまりnの階乗を見つける方法。C ++でのコンパイル時?
2 に答える
2
これは、C++でのテンプレートメタプログラミングに関するwikiの記事です。
これは、コンパイル時の関数の実行に関する別のwiki記事です。
これが階乗に関するSOの質問です。
コンパイル時の計算階乗のウィキの例を見てみましょう。
template <int N>
struct Factorial {
enum { value = N * Factorial<N - 1>::value };
};
template <>
struct Factorial<0> {
enum { value = 1 };
};
// Factorial<4>::value == 24
// Factorial<0>::value == 1
const int x = Factorial<4>::value; // == 24
const int y = Factorial<0>::value; // == 1
必要なすべての引数はコンパイル時に既知であるため(Factorial<4>
たとえば、で明示的に言及されています)、コンパイラーは必要なすべてのコードを生成できます。その後value
、Factorial<4>
構造体のは24になり、後で自分でハードコーディングしたかのように使用できます。
于 2012-10-19T07:29:40.533 に答える
-1
いわゆるテンプレートメタプログラミングへようこそ。
このページでは、それが何であるかを説明します。コンパイル時に整数の階乗を計算する特定の例があります。
于 2012-10-19T07:30:34.223 に答える