Eigen 初始化布尔数组

问题描述 投票:0回答:4

如何将 Eigen 库 (C++) 中的布尔数组初始化为特定的真值?有数字矩阵的初始值设定项,但我找不到布尔数组(Eigen::Array)的示例。

c++ initialization eigen
4个回答
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
投票

如果您尝试将整个数组初始化为

true
false
那么像这样的事情呢:

#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;

0
投票

另一种方法..

Eigen::Array<bool, Eigen::Dynamic, 1 > x;

x = blahblah_etc; // Do some stuff that modifies x

// Want to re-initialize x
x = (x == x); // Set all x values to true, or..
x = (x != x); // Set all x values to false.
© www.soinside.com 2019 - 2024. All rights reserved.