From 3e9220b1b40ca19b7499b8b257432ac18af77e03 Mon Sep 17 00:00:00 2001 From: p68710245 Date: Fri, 15 Mar 2024 18:56:23 +0800 Subject: [PATCH] Add function_template.cpp --- function_template.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 function_template.cpp diff --git a/function_template.cpp b/function_template.cpp new file mode 100644 index 0000000..2016fd9 --- /dev/null +++ b/function_template.cpp @@ -0,0 +1,31 @@ +#include +#include + +// 用函数模板求解定积分 +class F1 +{ +public: + double fun(double x) { return x * x; } +}; +class F2 +{ +public: + double fun(double x) { return x; } +}; + +template +double integrate(T cf, double a, double b, int n = 10000) +{ + double result{(cf.fun(a) + cf.fun(b)) / 2}; + double h{(b - a) / n}; + for (int i{1}; i < n; i++) + result += cf.fun(a + i * h); + result *= h; + return result; +} + +int main() +{ + std::cout << integrate(F1{}, 0, 1) << '\n'; + std::cout << integrate(F2{}, 0, 1); +} \ No newline at end of file