(如果这很直接,我很抱歉,我不熟悉C ++)
我有
#include <llvm/ADT/BitVector.h>
查看定义文件,它定义
// Intersection, union, disjoint union
bitVector &operator&=(const BitVector RHS) { ... }
我想做两位向量的并集;这似乎是交集的定义,所以我猜测交集将是这样的:
bitVector1 &= bitVector2;
它是否正确?再往下,它宣布,没有评论,
bitVector &operator|=(const bitVector &RHS) { ... }
假设这是联盟运营商会纠正吗? (位操作是| =)
谢谢您的帮助!
&=
对LHS和RHS BitVector
操作数的各个元素执行逻辑AND,并将结果存储在LHS操作数中。
|=
对LHS和RHS BitVector
操作数的各个元素执行逻辑OR,并将结果存储在LHS操作数中。
一个最小的例子:
#include <iostream>
#include <llvm/ADT/BitVector.h>
llvm::BitVector bitVector1(10, true);
llvm::BitVector bitVector2(10, false);
llvm::BitVector bitVector3(10, true);
int main()
{
for(int i = 0; i < bitVector1.size(); i++)
std::cout << bitVector1[i] << ' ';
std::cout << '\n';
bitVector2[4] = true; //5th element set to true
bitVector1 &= bitVector2;
for(int i = 0; i < bitVector1.size(); i++)
std::cout << bitVector1[i] << ' ';
std::cout << '\n';
bitVector1 |= bitVector3;
for(int i = 0; i < bitVector1.size(); i++)
std::cout << bitVector1[i] << ' ';
std::cout << '\n';
}
输出:
1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1