Существует conservativeResize, который вы не ищете, так как это может реально изменить некоторые значения. Лично я использую ваш метод (за исключением размещения нового). Вы также можете указать, что карта выровнена. Карта - это способ просмотра одной и той же памяти с другим видом (, например,). Если вы хотите создать реальный перестроенный объект, вы можете создать копию (через карту). Вы также можете использовать resize
, который не является оператором, если размер тот же. Я не думаю, что изменение размера будет работать с матрицами фиксированного размера, но карта будет. Выполните приведенный ниже код для примера.
Eigen::MatrixXf mat;
mat.resize(3,3);
mat << 1, 2, 3, 4, 5, 6, 7, 8, 9;
std::cout << mat << "\n\n";
mat.resize(9, 1);
std::cout << mat << "\n\n";
mat.conservativeResize(1, 9);
std::cout << mat << "\n\n";
Могу ли я использовать тот же консервативный методResize для векторов и матриц всех размеров и вкусов (динамический, фиксированный)? – Mankka
Пример изменения формы, где я получил свой код, но он все еще далек от реального оператора vec. – Mankka