diff --git a/README.md b/README.md index 682dc173..b4e0392c 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,7 @@ - [`15` 表达式模板](#15-表达式模板) + [群友提交](#群友提交-14) + [标准答案](#标准答案-14) + + [解析](#解析-3) - [`16` 通透函数宏](#16-制造传递函数模板的宏) + [群友提交](#群友提交-15) + [标准答案](#标准答案-15) @@ -2305,6 +2306,19 @@ auto operator/(const auto& lhs, const auto& rhs) { } ``` +**表达式模板**是简化版的 `std::ranges::zip_transform_view`。 + +优点:灵活,易用,可以充分利用编译器优化 + +缺点:实现复杂 + + + +
+ 解析 + +### 解析 + 顾名思义,**表达式模板**指使用模板类表示表达式。表达式由**运算符**和**操作数**按照一定规律组合而成。 观察题目中的表达式为 `a - b * c / d + e` 可知: @@ -2337,9 +2351,7 @@ auto operator/(const auto& lhs, const auto& rhs) { 综上所述,本题的**表达式模板**就是简化版的 `std::ranges::zip_transform_view`。 -我们只需要为**表达式模板**增加**亿**点点细节,就可以自行实现范围库了!🥳 - -> 使用**表达式模板**或范围库的原因:在提供更通用、更灵活的表达式计算的同时充分利用编译器优化,如内联、并行计算等。 +我们只需要为**表达式模板**增加**亿**点点细节,就可以自行实现范围库了!🥳🥳🥳