特征中的异或算子

时间:2012-09-10 04:47:03

标签: c++ eigen

我是VS C ++ 2010中实现Eigen Library的新手。 我的问题是我找不到运算符XOR来在我的矩阵中进行。我使用^来使我的XOR操作C ++并且它确实有效,但在Eigen它不起作用。任何人都可以告诉我是否有特征的XOR运算符?我已经准备好阅读文档,但我找不到它。下面是我正在处理的代码:

m(0,1) = 1;
for (i = 0; i < 7; i++) {
   for (j = 0; j < 7; j++) {
       m(i + 1,j + 1) = m(i,j) ^ m(i, j + 2);
       cout << m(i,j) << " ";
   }
   cout << endl;
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

不确定您的问题,因为您的代码的重要部分缺失(m的声明)。让我们尝试在不同的假设下给出答案:

1)您提供的剪辑是您想要的代码,但它没有按预期工作:

如果您已将m声明为

Eigen::Matrix<int,9,9> m;

代码应该有效。像Eigen::Matrix<float,9,9>这样的东西不起作用,因为{+ 1}}运算符没有在c ++中的float类型上定义。 ^将是矩阵的动态版本,并导致相同的错误。你没有提供错误,所以它也可能是完全不同的东西,例如错误标注Eigen::MatrixXf

2)您提供的代码段正在为您工作,您试图使用内置的特征运算符复制相同的功能:

reference中的特征类型没有定义m运算符。但同样,你的snipped中的运算符不在Eigen类型上,因为访问操作^的返回值是对用于声明m(i,j)的任何类型的ValueType引用。