对犰狳矢量的按位运算

时间:2015-03-13 14:20:01

标签: c++ linear-algebra armadillo

我需要在两个向量之间进行按位运算。我不想使用循环。 我正在使用犰狳。有人可以帮我这个吗?

编辑:

载体我指的是Armadillo库提供的载体模板。像这样:

urowvec newvec1 = zeros< urowvec>(5);

urowvec newvec2 = ones< urowvec>(5);

urowvec newvec3 = newvec1 | newvec2;

但是这给了我犰狳的错误。

由于

2 个答案:

答案 0 :(得分:1)

如果你实现这个:

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; 有效。

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

任何合理的编译器都会删除值复制。

答案 1 :(得分:0)

执行按位运算使用按位运算符

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

如果您提出了更具体的问题,您可能会得到更具体的答案。通过向量你的意思是std :: vector,它是一个int的向量吗?或者你的意思是一个位数组?