如果所需的子矩陣當時已知的「主」基質被創建,並且如果它們形成在主的一個分區,它可能在一定程度上產生複合基質類這樣的:
// supposing an IMatrix<T> interface (pure virtual members only) class
template< typename T >
struct CompositeMatrix : public IMatrix<T> {
typedef std::vector<PlainMatrix<T>*> tMatrices;
tMatrices submatrices;
T& element(size_t row, size_t column) {
return findsubmatrix(row, column)->element(row, column);
}
// find algorithm implementing 'chain of responsibility-like' pattern.
PlainMatrix<T>* findsubmatrix(size_t row, size_t col) {
for(tMatrices::iterator it = submatrices.begin()
; it != submatrices.end()
; ++it)
{
if(it->contains(row,col)) return *it;
}
return NULL;
}
};
'PlainMatix'可以以有效的記憶方式進行組織。