[英]Tutorials and Introductions to C++ Expression Templates
有什么好的介绍来创建C ++表达式模板系统? 我想表达对用户定义类型的算法,同时避免临时值(可能很大),并学习如何直接执行此操作而不是应用现有库。
我找到了Todd Veldhuizen的原始论文和Josuttis C ++模板书中的一个例子,以及Kreft&Langer的一篇文章。 在现代C ++课程的第6讲中提到了Josuttis.POOMA库背景很好地介绍了表达模板。
我正在寻找简单明了的论述。
我发现Expression Templates Demystified得到了相当好的解释。 首先介绍如何在没有模板的情况下实现数学表达式,并展示基本构建块和概念。
本文的第二部分展示了如何重构初始实现以使用模板来改进性能和减少代码。
IMO,这篇文章是“C ++模板:完整指南”中表达模板章节的一个很好的替代品。
我强烈建议查阅Eric Niebler Boost.Proto库。 可以在C ++上找到非常精细的介绍材料 - 下一篇:
http://cpp-next.com/archive/2010/08/expressive-c-introduction/
他在boost'con 2010上的演讲也非常有趣
对于你想要做的事情,你应该看看Boost.ublas的代码,因为它确实如此。
从文件vector.hpp
开始,然后返回到层次结构( vector<>
父项)。 矩阵有点复杂,但机制是相同的。
现在我可能建议不要尝试重现库的复杂性作为第一次尝试,比如ublas_expression
和类似的东西。 您可以通过将类型作为基础对象然后实现二元运算符来更简单地完成此操作。
请看这里: http : //www.bnikolic.co.uk/blog/cpp-expression-minimal.html
除了科学c ++书籍之外,你已经拥有了所有的资源,这本书真的只是原始论文(无论如何都是这个主题)而且已经过时了。 您可以查看C ++ Template Metaprogramming,了解更多基于表达式模板构思的现代技术,但“简单”之类的东西在它很简单之前不会随时可用。
我建议在Boost Operators中查看Boost算子 - 算术 。 这些是模板化的方法,扩展了基本的算术和比较操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.