ホームページ > バックエンド開発 > C++ > C++ テンプレート プログラミングを明らかにする

C++ テンプレート プログラミングを明らかにする

WBOY
リリース: 2024-06-04 18:11:00
オリジナル
671 人が閲覧しました

C++ テンプレート プログラミングは、パラメーター化されたクラスまたは関数を使用して汎用コードを作成するための手法であり、さまざまなデータ型の処理を可能にし、コードの保守性とスケーラビリティを向上させます。テンプレートを定義する: template キーワードを使用してテンプレート パラメーターを指定し、さまざまな型からインスタンス化できるクラスまたは関数を作成します。テンプレートを使用する: テンプレート名の前にテンプレート キーワードを追加し、パラメータ タイプを指定して、テンプレートの特定のインスタンスを作成します。実用的なケース: テンプレートを使用して二分検索を実行します。テンプレート パラメーターに異なる型を渡すことで、この関数をさまざまな型の並べ替えられた配列で使用できます。

C++ テンプレート プログラミングを明らかにする

C++ テンプレート プログラミングを明らかにする

C++ テンプレート プログラミングは、さまざまなデータ型を処理できる汎用コードを作成できる強力なテクニックです。テンプレートを使用すると、再利用可能なコンポーネントを作成でき、コードの保守性と拡張性が向上します。

テンプレートとは何ですか?

テンプレートは、パラメーター化されたクラスまたは関数です。これは、テンプレート パラメーターに異なるタイプを指定することで、テンプレートの複数のインスタンスを作成できることを意味します。たとえば、次のコードは、任意の型の要素を格納できるテンプレート クラス Array を作成します。 Array,它可以存储任何类型的元素。

template<typename T>
class Array {
public:
    Array(int size) : size(size), data(new T[size]) {}
    ~Array() { delete[] data; }

    T& operator[](int index) { return data[index]; }

private:
    int size;
    T* data;
};
ログイン後にコピー

如何使用模板

要使用模板,您需要在类或函数名前面加上 template

Array<int> intArray(10);
ログイン後にコピー

テンプレートの使用方法

テンプレートを使用するには、クラスまたは関数名の前に template キーワードを付けて、テンプレート パラメーターを指定する必要があります。たとえば、整数の配列を作成するには、次のコードを使用できます:

template<typename T>
int binary_search(Array<T>& arr, T target) {
    int low = 0;
    int high = arr.size() - 1;

    while (low <= high) {
        int mid = (low + high) / 2;
        T guess = arr[mid];

        if (guess == target) {
            return mid;
        } else if (guess < target) {
            low = mid + 1;
        } else {
            high = mid - 1;
        }
    }

    return -1;
}
ログイン後にコピー

実用的な例: 二分探索

🎜🎜テンプレートを使用した二分探索の実際の例を見てみましょう。二分探索は、ソートされた配列に対して機能する効率的な検索アルゴリズムです。 🎜
Array<int> intArray = {1, 3, 5, 7, 9};
int result = binary_search(intArray, 5);
ログイン後にコピー
🎜この関数はテンプレートを使用するため、あらゆる種類の並べ替えられた配列を処理できます。整数の配列に対してこの関数を使用するには、次のコードを使用できます: 🎜rrreee

以上がC++ テンプレート プログラミングを明らかにするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート