gpt4 book ai didi

c++ - Boost.uBLAS 中的矩阵表达式和 vector 表达式类是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:50:42 26 4
gpt4 key购买 nike

我曾尝试阅读 Boost 文档,但我不理解这个表达式概念。 Matrix类继承了一个matrix_expression类,不明白这个类是做什么用的。

谢谢。

最佳答案

它是一种包含某种行为的机制。

matrix_container 是一个容器。

matrix_expression 是一个表达式(比如两个矩阵相加)。它基于 RCTI 习惯用法,有助于库的设计。例如,假设您要将赋值写入类对象(成员函数)。假设一个比 ublas 更简单的上下文,其中你只有一个矩阵类型并且你想写:

template <typename _E>
void assign( _E const & e );

问题在于,您可以将套接字或 std::string 分配给矩阵。通常,人们会试图避免这种情况 ;-)

所以,更好的方法是写:

template <typename _E>
void assign( matrix_expression<_E> const & e ) ;

现在你只能给矩阵表达式赋值。我强调这只是逻辑,而不是 ublas 的特定设计 - 但是,逻辑始终是这个。

假设现在你想用两个矩阵,或者一个矩阵和一个表达式,或者两个表达式来编写你自己的运算符 *=,也许对于 *= 矩阵你想使用 lapack。matrix_expressionmatrix_container 之间的区别将帮助您编写此操作的专用版本。

PS:我强调,这是潜在的逻辑/动机,而不是实际发生的事情。如果您深入研究 ublas 内脏,您将看到更多相同逻辑的应用。

关于c++ - Boost.uBLAS 中的矩阵表达式和 vector 表达式类是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16287151/

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