在C++中,模板是一種強(qiáng)大的工具,它允許程序員編寫與數(shù)據(jù)類型無關(guān)的代碼。以下是模板的使用方法和注意事項:
使用方法:
template <typename T>
void swap(T& a, T& b) {
T temp = a;
a = b;
b = temp;
}
在這個例子中,T是一個類型參數(shù),表示任意類型。
int main() {
int x = 5, y = 10;
swap(x, y); // 使用int類型實例化模板函數(shù)
cout << "x = "<< x << ", y = "<< y << endl; // 輸出:x = 10, y = 5
return 0;
}
除了函數(shù)模板外,還可以定義類模板。類模板的使用方法與函數(shù)模板類似,只是將函數(shù)聲明替換為類聲明。例如,定義一個簡單的類模板,表示一個矩陣:
template <typename T>
class Matrix {
public:
Matrix(int rows, int cols) : data(rows, std::vector<T>(cols, 0)) {}
T& operator()(int row, int col) {
return data[row][col];
}
private:
std::vector<std::vector<T>> data;
};
使用類模板時,同樣需要提供一個具體的類型來替換模板參數(shù)。例如,使用上面定義的Matrix類來創(chuàng)建一個3x3的整數(shù)矩陣:
int main() {
Matrix<int> m(3, 3);
m(0, 0) = 1; m(0, 1) = 2; m(0, 2) = 3;
m(1, 0) = 4; m(1, 1) = 5; m(1, 2) = 6;
m(2, 0) = 7; m(2, 1) = 8; m(2, 2) = 9;
cout << "m(0, 0) = " << m(0, 0) << endl; // 輸出:m(0, 0) = 1
return 0;
}
注意事項:
template <int N>
void print() {
std::cout << "N = "<< N << std::endl;
}
int main() {
print<5>(); // 錯誤:模板參數(shù)必須是類型名
return 0;
}