犰狳向量的按位运算

Bitwise operations on Armadillo vectors

本文关键字:运算 向量      更新时间:2023-10-16

我需要在两个向量之间进行按位运算。我不想使用循环。我正在使用犰狳。谁能帮我解决这个问题?

编辑:

我所说的矢量是指犰狳图书馆提供的矢量模板。像这样:

Urowvec newvec1 = 零 (5);

Urowvec newvec2 = ones (5);

Urowvec newvec3 = newvec1 | newvec2;

但这给了我犰狳的错误。

谢谢

如果你实现这个:

inline urowvec operator|(const urowvec& lhs, urowvec& rhs){
  // ToDo - operate on an element by element basis, and return
  // a urowvec. Decide on something reasonable if the vectors
  // differ in size.
}

并确保这包含在需要运算符的每个编译单元中,然后urowvec newvec3 = newvec1 | newvec2;将是有效的。

您可以对其他按位运算符执行相同的操作。

任何合理的编译器都会省略值副本。

要执行按位运算,请使用按位运算符

 |   bitwise or
 &   bitwise and
 ^   bitwise xor
 ~   bitwise not
<<  bitwise shift left
>>  bitwise shift right

如果你给出了一个更具体的问题,你可能会得到一个更具体的答案。你所说的向量是指 std::vector,它是整数的向量吗?或者你的意思是位数组?