MatrixXf A = MatrixXf::Random(3, 3);
MatrixXf B = A.row(1);
std::vector<float> vec;
我想用行特征矩阵“ B”中的元素构建向量“ vec”。像这样的“ vec = B.data()”
最佳答案
除了显而易见的答案(手动push_back
或预分配+逐索引分配)之外,您还可以使用::data()
返回的基本指针直接将其初始化:
Eigen::MatrixXf A = Eigen::MatrixXf::Random(3, 3);
Eigen::MatrixXf B = A.row(1);
std::vector<float> vec(B.data(), B.data() + B.size());
请注意,Eigen可能会使用内存对齐方式来利用SSE系列指令,因此在尺寸较大时可能无法正常工作。
关于c++ - 如何从 Eigen 矩阵映射/构建C++ vector ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45501888/