2013-04-29 28 views

回答

2

這是包含某種行爲的機制。

一個matrix_container是 - 作爲話說 - 一個容器。

matrix_expression是一個表達式(如加成兩個矩陣的)。 它基於RCTI習語,幫助圖書館的設計。 作爲一個例子,假設你想把這個賦值寫到一個類對象(成員函數)中。假設一個比uBLAS庫,在這裏你只有一個矩陣式簡單的背景和你想要寫:

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

的問題,這是一個,那麼你可以串分配插座或標準::到一個矩陣。通常情況下,人們試圖避免這種;-)

所以,更好的辦法是寫:

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

現在則只能分配矩陣表達式。 我強調這只是邏輯而不是ublas特定的設計 - 然而,邏輯永遠是這一個。

現在說你想用兩個矩陣或者矩陣和表達式或者兩個表達式來編寫自己的運算符* =,也許對於想要使用lapack的* =矩陣。 matrix_expressionmatrix_container之間的區別會幫你寫這個操作的專門版本。 PS:我強調,這不是實際發生的基本邏輯/動機。如果你深入研究ublas的膽量,你將會看到更多關於如何使用相同的邏輯。