Eigen初始化布尔数组

5
你如何在Eigen库(C ++)中将布尔数组初始化为特定的真值?数值矩阵有初始值设定器,但我找不到布尔数组(Eigen :: Array)的示例。
3个回答

9
其他答案都是正确的,但为了完整起见,让我补充一下:
#include <Eigen/Dense>
using namespace Eigen;

typedef Array<bool,Dynamic,1> ArrayXb;
ArrayXb a = ArrayXb::Constant(5,true);
ArrayXb b(5);
b.setConstant(true);         // no-resizing
b.fill(true);                // alias for setConstant
b.setConstant(10,true);      // resize and initialize
Array<bool, 5, 1> c(true);

在最后一种情况下,由于在编译时已知大小,因此参数被解释为初始化值。

2
如果您想将整个数组初始化为truefalse,可以尝试以下方式:
#include <iostream>
#include <Eigen/Dense>

using namespace Eigen;

int main()
{
  Array<bool, 1, 5> false_array(5);
  false_array = Array<bool, 1, 5>::Zero(5);

  Array<bool, 1, 5> true_array(5);
  true_array = Array<bool, 1, 5>::Ones(5);

  return 0;
}

1
如果我正确理解了您的问题,那么这个方案是可行的。
Eigen::Array<bool,1,5> v;
v << true, true, false, true, true;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接