我提出了一套规则来将一组位转换为另一组。
为了使这些工作,我基本上需要对源位集中的一定数量的位进行异或运算(例如,result[i]=source[foo(i)]^source[bar(i)]在哪里foo和bar被边界检查)。由于我希望能够更改集合的大小,因此我决定使用std::vector<bool>.
因此,我最终得到:
int foo(int i);
int bar(int i);
void baz(std::vector<bool> in, std::vector<bool>& out){
out.clear();
for(int i=0;i<in.size();i++){
if(foo(i)>0 && foo(i)<in.size())
out[i]^=in[foo(i)]
if(bar(i)>0 && bar(i)<in.size())
out[i]^=in[bar(i)]
}
}
但是,这给了我一个错误:
没有可行的重载^=
为了能够做这些事情,我能做些什么?