如何解决如何创建一个位掩码向量,该向量基本上替换 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 举报,一经查实,本站将立刻删除。