C でのテンプレート テクノロジの使用
#C は、強力な機能と柔軟性を備えた非常に人気のあるプログラミング言語です。最も重要な機能の 1 つはテンプレート テクノロジです。これにより、プログラマは、さまざまなニーズやシナリオに適応するために共通のデータ型と関数を定義できます。 1. テンプレートの基本概念テンプレートは、コンパイル時にコードを拡張するためのメカニズムです。コードを記述するときにテンプレートを使用して型をパラメータ化し、コードをさまざまな型に適用できるようにすることができます。テンプレートを使用することで、同様のコードを繰り返し記述することがなくなり、コードの再利用性や保守性が向上します。 C では、テンプレートを使用して関数テンプレートとクラス テンプレートの 2 つを定義できます。それらの構文は基本的に同じですが、使用方法が若干異なります。たとえば、次は単純な関数テンプレートの定義です。template<typename T> T Max(T x, T y) { return (x > y ? x : y); }この例では、関数テンプレート Max を定義し、キーワード template を使用してこれがテンプレートであることを示し、a8093152e673feb7aba1828c43532094 で必要な型パラメータを指定します。ここでの typename T は、T が型パラメータであることを示します。 2. 関数テンプレートの使用法プログラム内で Max 関数を使用する場合、さまざまな種類のパラメーターを渡すことができます。たとえば、次のように使用できます。
int a = 1, b = 2; double c = 1.2, d = 3.4; cout << Max(a, b) << endl; cout << Max(c, d) << endl;この例では、Max 関数を使用して、2 つの整数の最大値と 2 つの浮動小数点数の最大値を計算します。 C コンパイラは、コンパイル時にこれらの呼び出しを対応する関数に自動的に展開します。 テンプレート パラメーターを使用してタイプを示すことに加えて、他のパラメーターも使用できます。たとえば、整数パラメータを使用して、比較する桁数を決定できます (整数全体ではなく、2 つの整数の下位 4 ビットを比較したい場合):
template<typename T> T MaxBits(T x, T y, int numbits) { T mask = (1 << numbits) - 1; x &= mask; y &= mask; return (x > y ? x : y); } int x = 0x1234, y = 0x9876; cout << hex << MaxBits(x, y, 4) << endl;3. クラスの使用法テンプレート関数テンプレートに加えて、C ではクラス テンプレートを定義することもできます。クラス テンプレートもクラスの一種であり、テンプレート パラメーターをメンバー データ型として使用できます。たとえば、スタック クラス テンプレートの定義は次のとおりです。
template<typename T> class Stack { public: void Push(const T& value) { data_.push_back(value); } void Pop() { data_.pop_back(); } T& Top() { return data_.back(); } const T& Top() const { return data_.back(); } bool Empty() const { return data_.empty(); } private: std::vector<T> data_; };この例では、要素タイプとしてテンプレート パラメーター T を使用するテンプレート クラス Stack を定義します。 Stack クラスは次のように使用できます。
Stack<int> stack1; stack1.Push(1); stack1.Push(2); stack1.Push(3); cout << stack1.Top() << endl; stack1.Pop(); cout << stack1.Top() << endl; Stack<string> stack2; stack2.Push("Hello"); stack2.Push("World"); cout << stack2.Top() << endl; stack2.Pop(); cout << stack2.Top() << endl;この例では、2 つの Stack インスタンスを作成します。1 つは整数の格納用で、もう 1 つは文字列の格納用です。テンプレートを使用すると、さまざまな種類のデータに機能する共通のデータ構造を簡単に作成できます。 4. テンプレートに関する注意事項テンプレートを使用する場合、いくつかの注意事項があります:
以上がC++ でのテンプレート テクノロジの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。