Я новичок в реализации Eigen Library в VS C ++ 2010.
Моя проблема в том, что я не могу найти оператор XOR, чтобы сделать это в моей матрице. Я использую ^, чтобы сделать мои операции XOR C ++, и это работает, но в Eigen это не работает. Может кто-нибудь сказать мне, есть ли оператор XOR для Eigen? Я все готов прочитать документацию, но не могу найти ее. Вот код, над которым я работаю:
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;
}
Спасибо за вашу помощь.
Не уверен насчет вашего вопроса, так как очень важные фрагменты вашего кода отсутствуют (объявление m). Попробуем дать ответ при разных предположениях:
1) предоставленный вами отсканированный код — это код, который вы хотите, но он работает не так, как задумано:
Если вы заявили m
как
Eigen::Matrix<int,9,9> m;
Код должен работать. Что-то вроде Eigen::Matrix<float,9,9>
не будет работать, так как ^
Оператор не определен для типов с плавающей точкой в C ++. Eigen::MatrixXf
будет динамическая версия вашей матрицы, и приведет к той же ошибке. Вы не указываете, в чем заключается ошибка, поэтому она также может быть чем-то совершенно другим, например неправильные размеры m
2) Предоставленный вами фрагмент работает на вас, и вы пытаетесь повторить ту же функциональность с помощью встроенных собственных операторов:
Здесь нет ^
оператор, определенный на собственных типах в ссылка. Но опять же, оператор в вашем урезанном состоянии не относится к собственным типам, как возвращаемое значение вашей операции доступа m(i,j)
является ссылкой ValueType на любой тип, который вы использовали для объявления m
с.
Других решений пока нет …