我需要为我的代码的一部分提供一个对象的索引,该对象存储为Eigen::Array
类型。我没有将Eigen的功能扩展到该部分代码的奢侈,也不能将它传递给指针。我需要一个索引来表示数组中匹配值的位置。
假设我有一个Eigen::Array
这样的对象:
Eigen::Array<int,5,1> mat;
mat << 0, 0, 1, 0, 1;
现在我想在上面的矩阵中找到一个元素的第一个索引,它比较一些条件(比如,它们等于 true )。
因此,对于上述输入,我希望输出2
。我也接受4
的输出,因为我并不特别关注订单(如果存在指定搜索方向的选项,那将是好的,但不是必需的。)
std::size_t const index = FindIndex(mat);
assert(index == 2 || index == 5); // please don't fail!
我知道我可以循环遍历数组并通过计数器手动实现,但这有点忽略了Eigen
的要点。有没有办法使用Eigen
的内置功能实现这一点(其他而不是unaryExpr
?
答案 0 :(得分:0)
没有。我无法看到你可以使用的任何东西。
您可以找出有多少非零值:
std::size_t const numNonZero = (mat != 0).count();
assert(numNonZero == 2);