Увеличение динамического размера матрицы

#c #boost #matrix

#c #повышение #матрица

Вопрос:

Я пишу программу на c , которая использует библиотеку boost для матричных операций. У меня возникла необходимость в том, чтобы динамически увеличивать размер исходной матрицы.

Пример: если мой размер матрицы был:

    matrix<float> m(3,3);
  

и позже моя матрица будет расширяться, и мне понадобится матрица 4 * 4. Наивный подход, о котором я мог подумать, заключается в выделении новой матрицы размером 4,4 и копировании в нее всех элементов матрицы 3 * 3. Нет ли лучшего способа сделать это в boost?

Ответ №1:

Пожалуйста, рассмотрите возможность использования resize() функции: «Существующие элементы матрицы предварительно отображаются (sic), когда они указаны».

Вот пример кода из Boost.

Это один из способов.

 matrix<int> A;  // Matrix size would be zero by zero
A.resize(2, 3);  // Matrix size became 2 by 3
  

Ответ №2:

Почему бы просто не создать матрицу, используя конструктор no arg, и при необходимости вызвать метод resize ?

http://www.boost.org/doc/libs/1_47_0/libs/numeric/ublas/doc/matrix.htm