模板类-bitset


  • stl提供了std::bitset模板类,定义:bitset <32> bitvec;尖括号中的为长度,这条语句把bitvec定义为含有32个的bitset对象。和容器一样,按位置来访问他们,其位置编号从零开始
  • 初始化bitset对象的方法: 1、bitset<n> b; b有n位,每位都为0 2、bitset<n> b(u); b是unsigned long型u的一个副本 4、bitset<n> b(s, pos, n); b是s中从位置pos开始的n个位的副本, 相当于b是从s中pos位置开始截取n位
  • bitset操作: b.any() b中是否存在为1 b.count() 统计位为1的个数 b.test(pos) 测试b中pos位处是否为1 b.set() 把b中所有位都置为1 b.reset() 所有位都置为0 b.flip() 把b中所有二进制位取反 b.flip(pos) pos处取反 b.to_ulong() 将此二进制转换为一个unsigned long类型值
    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
    	bitset<3> bs;
    	bs[0] = 1, bs[1] = 1, bs[2] = 1;
    
    	if (bs.any() == 1)	cout << "存在1的位" << endl;
    	else	cout << "不存在为1的位" << endl;
    	cout << "1的个数为"<< bs.count() << endl; 
    	bs.set();
    	cout << "1的个数为"<< bs.count() << endl; 
    	unsigned long value = bs.to_ulong();
    	cout << value << endl;
    	bs.reset();
    	cout << "1的个数为"<< bs.count() << endl; 
    	return 0;
    } 

原文地址:https://www.cnblogs.com/Tovi/p/6194770.html