Mẫu biểu thức C++ là gì?
Expression templates là danh mục lập trình meta mẫu C++, trì hoãn việc đánh giá các biểu thức con cho đến khi biểu thức đầy đủ được biết, để tối ưu hóa (đặc biệt là loại bỏ thời gian).
Có sách xung quanh thảo luận về các phương pháp/tính toán bằng cách sử dụng Mẫu biểu thức C++ không?
Tôi tin rằng ET's được phát minh bởi Todd Veldhuizen, người đã xuất bản một bài báo về nó cách đây 15 năm. (Có vẻ như nhiều liên kết cũ hơn đến nay đã chết, nhưng hiện tại here là phiên bản của nó.) Một số tài liệu về nó là trong các tác phẩm của David Vandevoorde và Nicolai Josuttis 'C++ Templates: The Complete Guide.
Bằng cách nào, Mẫu biểu thức C++ tốt hơn sử dụng thuần túy C?
Chúng cho phép bạn viết mã theo cách cấp cao biểu cảm mà không làm mất hiệu suất. Ví dụ,
void f(const my_array<double> a1, const my_array<double> a2)
{
my_array<double> a3 = 1.2 * a1 + a1 * a2;
// ..
}
có thể được tối ưu hóa tất cả các con đường xuống
for(my_array<double>::size_type idx=0; idx<a1.size(); ++idx)
a3[idx] = 1.2*a1[idx] + a1[idx]*a2[idx];
đó là nhanh hơn, nhưng khó hiểu.
Nếu bạn vẫn còn quan tâm đến cách biểu mẫu làm việc, Eigen (một Linear Al thư viện gebra) có tài liệu rất tốt về cách họ thực hiện chúng. –