#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