在C++中,函數模板可以很容易地應對復數類型。你可以定義一個模板函數,它接受任何支持加、減、乘、除和取共軛等基本運算的類型。對于復數類型,這些運算通常都是定義良好的。
下面是一個簡單的例子,展示了如何使用函數模板來處理復數:
#include <iostream>
#include <complex>
// 函數模板定義
template <typename T>
T add(const T& a, const T& b) {
return a + b;
}
template <typename T>
T subtract(const T& a, const T& b) {
return a - b;
}
template <typename T>
T multiply(const T& a, const T& b) {
return a * b;
}
template <typename T>
T divide(const T& a, const T& b) {
return a / b;
}
int main() {
// 使用std::complex作為模板參數
std::complex<double> c1(3.0, 2.0);
std::complex<double> c2(1.0, 7.0);
std::complex<double> sum = add<std::complex<double>>(c1, c2);
std::complex<double> diff = subtract<std::complex<double>>(c1, c2);
std::complex<double> prod = multiply<std::complex<double>>(c1, c2);
std::complex<double> quot = divide<std::complex<double>>(c1, c2);
std::cout << "Sum: " << sum << std::endl;
std::cout << "Difference: " << diff << std::endl;
std::cout << "Product: " << prod << std::endl;
std::cout << "Quotient: " << quot << std::endl;
return 0;
}
在這個例子中,我們定義了四個模板函數 add
、subtract
、multiply
和 divide
,它們分別用于執行復數的加、減、乘、除運算。然后,在 main
函數中,我們使用 std::complex<double>
作為模板參數,并調用這些函數來處理復數。
注意,這個例子假設你已經包含了 <complex>
頭文件,并且你的編譯器支持C++標準中定義的復數類型。如果你使用的是其他類型的復數庫,你可能需要調整模板函數的定義以適應該庫的API。