我试过阅读Boost Documentation,但我不明白这个表达概念。 Matrix类继承了一个matrix_expression类,我不明白这个类用于什么。
谢谢。
答案 0 :(得分:2)
这是一种包含某种行为的机制。
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特定的设计 - 然而,逻辑总是这一个。
现在假设您想编写自己的运算符* =有两个矩阵,或者用矩阵和表达式或两个表达式编写,也许对于* = matrix你想要使用lapack。
matrix_expression
和matrix_container
之间的区别可以帮助您编写此操作的专用版本。