Как насчет определения класса шаблона следующим образом:
template <class V, class I = int, class S = FullMatrix<V> >
class Matrix{
private:
S m_structure; //The matrix structure
I m_rowstart;//Row start index
I m_columnstart;//Column start index
}
Основные конструкторы wou л.д. быть
Matrix();
Matrix(size_t r, size_t c);//r rows and c columns
Matrix(size_t r, size_t c, I rowStart, I columnStart);//rowstart and columnstart are given start indices
Matrix(const Matrix<V, I, S>& source);
Вы бы тогда функции возвращать индексы минимум/максимум строк/столбцов формы:
I MinRowIndex() const;
Далее, у вас есть функции, необходимо указать число строк/столбцов в матрице ,
size_t Rows() const;
Затем функция, чтобы обеспечить возможность замены элементов в строке/столбце другого массивом элементов
void Row(I row, const Array<V, I>& val);//Replace row
Затем перегрузок(), чтобы разрешить доступ к элементу в данной строке и столбце
const V& operator()(I row, I column) const;//Get Element
V& operator() (I row, I column);
Возможно, необходимо провести вычислительные испытания, чтобы проверить преимущества этого метода по сравнению с поддержанием большой матрицы и отдельных показателей запуска/останова различных подматриц s (как было предложено Лагербаером в другом потоке), одно преимущество заключается в том, что каждая подматрица независима. Их можно транспонировать, перемещать, заменять. Возможно, вам, вероятно, потребуется поддерживать матричную структуру более высокого уровня, в которой эта матрица является подструктурой.
Но, похоже, он удовлетворяет вашему вопросу о возможности ссылаться на подматрицы независимо.
Ваш первоначальный вопрос был яснее, чем вы написали здесь! Я предлагаю вам закрыть это и попытаться уточнить исходную дискуссию – 2010-12-05 11:56:16
Ваш вопрос непонятен, можете ли вы разместить дополнительную информацию. Код Возможно? – nixon 2010-12-05 11:44:36