gpt4 book ai didi

C++ 表达式模板

转载 作者:可可西里 更新时间:2023-11-01 18:15:29 24 4
gpt4 key购买 nike

我目前使用 C 进行数值计算。我听说使用 C++ 表达式模板更适合科学计算。简单来说,C++ 表达式模板是什么?

  1. 有没有讨论使用 C++ 表达式模板进行数值方法/计算的书籍?

  2. 在哪些方面,C++ 表达式模板比使用纯 C 更好?

最佳答案

What are C++ Expression Templates in simple terms?

Expression templates是 C++ 模板元编程的一个类别,它延迟子表达式的计算,直到知道完整的表达式,以便可以应用优化(尤其是临时变量的消除)。

Are there books around that discuss numerical methods/computations using C++ Expression Templates?

我相信 ET 是由 Todd Veldhuizen 发明的,他在 15 年前发表了一篇关于它的论文。 (似乎许多旧的链接现在已经失效,但目前 here 是它的一个版本。)关于它的一些 Material 在 David Vandevoorde 和 Nicolai Josuttis 的 C++ Templates: The Complete Guide 中。 .

In what way, C++ Expression Templates are better than using pure C?

它们允许您以富有表现力的高级方式编写代码,而不会损失性能。例如,

void f(const my_array<double> a1, const my_array<double> a2) 
{
my_array<double> a3 = 1.2 * a1 + a1 * a2;
// ..
}

可以一直优化到

for( my_array<double>::size_type idx=0; idx<a1.size(); ++idx ) 
a3[idx] = 1.2*a1[idx] + a1[idx]*a2[idx];

哪个更快,但更难理解。

关于C++ 表达式模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2598579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com