微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何创建一个位掩码向量,该向量基本上替换 C++11 中的布尔向量?

如何解决如何创建一个位掩码向量,该向量基本上替换 C++11 中的布尔向量?

我正在尝试创建一个位掩码向量来存储真/假值,这些值将告诉我是否需要打印另一个向量中的特定索引值。

例如:std::vector<int> a ; b 是一个位掩码向量,它将保存与整数向量 a 对应的标志值,这个标志告诉我是否需要打印相应索引处的特定值。

a {1,2,3}  
b { true,false,true} // I need a similar bitmask which would help me print 1 and 3 

这个任务可以通过其他方式来实现,我正在处理的问题需要使用位掩码。在此先感谢您帮助我。

解决方法

正如许多人已经建议的那样,我会这样做:

  • myBitset 将保留标志。 1(设置)用于打印标志,0(清除)用于非打印标志
#include <bitset>
#include <iostream>
#include <vector>
using namespace std;

int main(int argc,char** argv){

  std::vector<int> a {1,2,3,4,5,6,7,8,9,10};

  std::bitset<10> myBitset;

  myBitset.set(3);             // set fourth bit  ==> display 4
  myBitset.set(6);             // set seventh bit ==> display 7
  myBitset[8] = true;          // set nineth bit ==> display 9
  myBitset[9] = myBitset[3];   // set 10th bit ==> display 10

  std::cout << "Mybitset" << myBitset << endl;

  for (int i=0; i<a.size(); i++)
  {
      if (myBitset.test(i))
      {
          std::cout << a.at(i);
      }
  }

  return (0);
}

输出将是:

1101001000
47910

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。