在特征中实现vec - 运算符的最佳(规范)方法是什么?我确信这个无处不在的运算符会被实现,但我在文档中找不到它。
目前,对于矩阵M
,我这样做:
Eigen::Map<Eigen::VectorXd> tmp(nullptr, 0);
new (&tmp) Eigen::Map<Eigen::VectorXd>(M.data(), M.size());
答案 0 :(得分:1)
有conservativeResize,这不是您正在寻找的,因为这实际上可能会改变某些值。就个人而言,我使用你的方法(除了新的位置)。您还可以指定地图已对齐。 Map是一种使用不同视图查看相同内存的方法(例如重新整形)。如果需要实际的重塑对象,可以创建副本(通过Map)。如果大小相同,您也可以使用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";