将特征/密集数组之间的逻辑运算结果分配给std :: vector

时间:2016-03-15 20:03:45

标签: c++ eigen

我正在处理图书馆。

我可以cout<<(PointsSorted.col(0).array()<0)<<endl;

输出为:

1 1 1 1 1 0 0 0 0

0

但是如何将此输出分配给std :: vector。我有一个缓慢的解决方案来做一个指针。我想知道是否有更快的方式:

vector<int> v;
v.push_back((PointsSorted.col(0).array()<0));

1 个答案:

答案 0 :(得分:1)

我已在其他论坛上回答了此问题,但为了记录,您可以将std::vector<int>视为Eigen::VectorXi。这是一个独立的例子:

#include <iostream>
#include <vector>
#include <Eigen/Dense>
using namespace Eigen;
using namespace std;

int main()
{
  MatrixXd points = MatrixXd::Random(6,6);
  int n = points.rows();
  std::vector<int> v(n);
  VectorXi::Map(v.data(), n) = (points.col(2).array()<0).cast<int>();
  for(int i=0; i<n; ++i) cout << v[i];
  cout << endl;
}