C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でのテンプレートの特殊化


C ++では、テンプレートを使用して一般化された関数とクラスを作成します。したがって、int、char、floatなどの任意のタイプのデータ、またはテンプレートを使用するユーザー定義データを使用できます。

このセクションでは、テンプレートの特殊化の使用方法を説明します。これで、さまざまなタイプのデータ用に一般化されたテンプレートを定義できます。そして、特別なタイプのデータのためのいくつかの特別なテンプレート関数。より良いアイデアを得るためにいくつかの例を見てみましょう。

サンプルコード

#include<iostream>
using namespace std;
template<typename T>
void my_function(T x) {
   cout << "This is generalized template: The given value is: " << x << endl;
}
template<>
void my_function(char x) {
   cout << "This is specialized template (Only for characters): The given value is: " << x << endl;
}
main() {
   my_function(10);
   my_function(25.36);
   my_function('F');
   my_function("Hello");
}

出力

This is generalized template: The given value is: 10
This is generalized template: The given value is: 25.36
This is specialized template (Only for characters): The given value is: F
This is generalized template: The given value is: Hello

テンプレートの特殊化は、クラス用に作成することもできます。一般化されたクラスと特殊なクラスを作成して、1つの例を見てみましょう。

サンプルコード

#include<iostream>
using namespace std;
template<typename T>
class MyClass {
   public:
      MyClass() {
         cout << "This is constructor of generalized class " << endl;
      }
};
template<>
class MyClass <char>{
   public:
      MyClass() {
         cout << "This is constructor of specialized class (Only for characters)" << endl;
      }
};
main() {
   MyClass<int> ob_int;
   MyClass<float> ob_float;
   MyClass<char> ob_char;
   MyClass<string> ob_string;
}

出力

This is constructor of generalized class
This is constructor of generalized class
This is constructor of specialized class (Only for characters)
This is constructor of generalized class

  1. C ++プログラムのテンプレートの特殊化?

    このチュートリアルでは、C++でのテンプレートの特殊化を理解するためのプログラムについて説明します。 sort()のような標準関数は、任意のデータ型で使用でき、それぞれで同じように動作します。ただし、特定のデータ型(ユーザー定義でも)に対して関数の特別な動作を設定する場合は、テンプレートの特殊化を使用できます。 例 #include <iostream> using namespace std; template <class T> void fun(T a) {    cout << "The main template f

  2. C++でのテンプレートメタプログラミング

    テンプレートを使用してコンパイル時に計算を行うプログラムを作成する場合、これはテンプレートメタプログラミングと呼ばれます。 サンプルコード #include <iostream> using namespace std; template<int n>struct power {    enum { value = 4*power<n-1>::value }; }; template<>struct power<0> {    enum { value = 1 }; }; int main