比较C ++中的子位集

时间:2016-11-10 19:49:53

标签: c++ bitset

我有两个位集std::bitset<200> Astd::bitset<200> B,我想比较位A[10-60]B[50-100]。我将两个位集中的50位提取到另外两个位集中,然后将它们比较如下。有没有更好的方法?

std::bitset<200> A, B;
// A and B are already set
std::bitset<50> x, y;
for(int i=10; i<=60; i++)
  if(A.test(i)) x.set(i);
for(int i=50; i<=100; i++)
  if(B.test(i)) y.set(i);

if( x == y) ....

1 个答案:

答案 0 :(得分:4)

如何将两个位集A和B一起循环?

bool same = true;
for (size_t ai = 10, bi = 50; ai != 60; ++ai, ++bi) {
  if (A.test(ai) != B.test(bi) {
    same = false;
    break;
  }
}
// same denotes if the sections of A and B are equal.