HiroLab

プログラミングに関する情報発信サイト。

C++

【C++】Day 15:C++のテンプレート

投稿日:

Day 15では、C++のテンプレートについて学習します。

テンプレートは、汎用的なプログラムを作成するための強力な機能で、関数やクラスを汎用的に定義することができます。

以下にテンプレートの主な内容と、例題、演習問題を提示します。

 

テンプレートの主な内容:

1. 関数テンプレート:
– 関数テンプレートは、関数を汎用的に定義する方法です。
– 関数テンプレートを使用することで、異なるデータ型に対して同じ処理を行う関数を1つにまとめることができます。

 

2. クラステンプレート:
– クラステンプレートは、クラスを汎用的に定義する方法です。
– クラステンプレートを使用することで、異なるデータ型に対して同じデータ構造や振る舞いを持つクラスを1つにまとめることができます。

 

3. テンプレートの特殊化:
– テンプレートの特殊化を使用することで、特定のデータ型に対してカスタムの処理を行うことができます。

 

例題:

#include <iostream>

// 関数テンプレート
template <typename T>
T add(T a, T b) {
return a + b;
}

// クラステンプレート
template <typename T>
class Pair {
public:
Pair(T first, T second) : firstValue(first), secondValue(second) {}

T getFirst() const {
return firstValue;
}

T getSecond() const {
return secondValue;
}

private:
T firstValue;
T secondValue;
};

int main() {
// 関数テンプレートの使用
int sum1 = add(1, 2);
double sum2 = add(3.14, 2.71);

std::cout << "Sum1: " << sum1 << std::endl;
std::cout << "Sum2: " << sum2 << std::endl;

// クラステンプレートの使用
Pair<int> pair1(10, 20);
Pair<std::string> pair2("Hello", "World");

std::cout << "First value of pair1: " << pair1.getFirst() << std::endl;
std::cout << "Second value of pair2: " << pair2.getSecond() << std::endl;

return 0;
}

 

演習問題:

1. `std::vector` を使用して、異なるデータ型に対して平均値を計算する関数テンプレート `average` を定義してください。この関数テンプレートは、ベクトルの要素を合計して要素数で割った平均値を返すものとします。

2. クラステンプレート `Triple` を定義してください。このクラスは3つの要素を持ち、それぞれの要素を格納するためのメンバ変数と、要素を表示するメソッド `display` を持ちます。

これらの例題と演習問題を解くことで、テンプレートの使い方を理解し、汎用的なプログラムの作成スキルを向上させることができます。問題を解いたら、テンプレートが適切に動作しているかどうかを確認してみてください。

-C++
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【C++】Day1-30 総復習/演習問題

以下に、Day 1-30までのC++学習カリキュラムにおける総復習と演習問題を提示します。 演習問題に対する回答と解説も記載しますので、各問題に取り組んで理解を深めてください。 ※後半に回答/解説を記 …

【C++】Day 23:ネットワークプログラミングの応用

Day 23では、ネットワークプログラミングの応用について学習します。 ネットワークプログラミングは、クライアントとサーバーの間でデータを送受信するだけでなく、さまざまな応用があります。 以下にネット …

【C++】Day 1:C++の基礎構文について

Day 1では、C++の基礎構文について学習します。 プログラムの構造: C++プログラムの基本的な構造を理解する。 C++のプログラムはmain()関数からプログラムが開始されます。 後述する演習問 …

【C++】Day 16:C++のラムダ式とSTLアルゴリズム

Day 16では、C++のラムダ式とSTLアルゴリズムについて学習します。 ラムダ式は、簡単な関数をインラインで定義する方法であり、STLアルゴリズムは標準ライブラリのアルゴリズム関数です。 以下にそ …

【C++】Day 20:マルチスレッドプログラミングの応用

Day 20では、マルチスレッドプログラミングの応用について学習します。 マルチスレッドプログラムは様々な応用が可能であり、より高度なスレッド制御や同期手法を使用して性能や効率を向上させることができま …