C Template Typedef for Matrix Column Vector
In C besteht eine häufige Aufgabe darin, einen Spaltenvektor zu erstellen, der einer Matrix mit bestimmten Dimensionen entspricht . Wünschenswert wäre beispielsweise eine von einer Matrix-Klasse abgeleitete Vector-Klasse. Leider führt die Verwendung des Standard-Typedef-Mechanismus für diesen Zweck zu Kompilierungsfehlern.
C 11-Lösung: Alias-Deklarationen
C 11 führte Alias-Deklarationen ein, eine Verallgemeinerung von Typedef, Dies ermöglicht eine Vorlagenspezialisierung. Der folgende Code bietet eine Lösung:
template <size_t N> using Vector = Matrix<N, 1>;
Mit dieser Deklaration wird der Typ Vector<3> entspricht Matrix<3, 1>.
C 03 Workaround
In C 03 besteht die Workaround, die der Alias-Deklaration am ähnlichsten ist, in der Verwendung einer verschachtelten Typdefinition:
template <size_t N> struct Vector { typedef Matrix<N, 1> type; };
In diesem Fall ist Vector<3>::type äquivalent zu Matrix<3, 1>.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von C-Vorlagen einen Spaltenvektortyp definieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!