ホームページ >バックエンド開発 >C++ >C で行列テンプレートからベクトル型エイリアスを作成するにはどうすればよいですか?

C で行列テンプレートからベクトル型エイリアスを作成するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-30 12:59:11914ブラウズ

How Can I Create a Vector Type Alias from a Matrix Template in C  ?

テンプレート エイリアスを使用した行列のようなベクトルの Typedef の作成

次のクラス テンプレートを考えてみましょう:

template<size_t N, size_t M>
class Matrix {
    // ....
};

目標は、サイズ N と 1 の行列。最初は typedef:

typedef Matrix<N,1> Vector<N>;

を使用して試行されましたが、コンパイル エラーが発生しました。類似しているが同一ではない解決策は、クラス継承を使用して達成されました。

template <size_t N>
class Vector: public Matrix<N,1>
{ };

より適切な解決策を見つけるために、C 11 で導入されたエイリアス宣言に目を向けます。

template <size_t N>
using Vector = Matrix<N, 1>;

これにより、次のことが可能になります。型エイリアス Vector の作成これは、Matrix と同等です。

C 03 では、ネストされた typedef を持つ構造体を使用して同様の近似を実現できます。

template <size_t N>
struct Vector
{
    typedef Matrix<N, 1> type;
};

ここでは、型 Vector

N>::type は、行列 と同等です。

以上がC で行列テンプレートからベクトル型エイリアスを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。