C++自带数据结构 bitset相关用法

bieset是一种类似于数组的数据结构,需要引用 <bitset>头文件才能使用

  • 定义方法
bitset <x> xxx; //定义一个大小为x,名称为xxx的bitset类型的变量
bitset <x> xxx(y) //赋初值为y,进行同上的定义

char c[] = "XXXXXX";
bitset <x> xxx(c); //以字符数组c的内容为初值,进行同上的定义。注意c中的内容只能是'0'或'1',否则会出事。

输出可以正常输出。

  • 时间复杂度
    STL肯定慢啊。。。
    上网查了一下,执行一次位运算大概是\Theta(n / 32) (n为内容大小)
  • 操作符
bitset<x> xxx (string"XXXXXX") //道理同上
//支持 &= |= ^= <<= >>=
// ~ << >>
//== != 
//&  | ^
//内容可以用数组的引用方法
for(int i = 0; i < x; ++i) //注意下标从0开始
    cout << xxx[i] << " ";
puts(""); 
//也可以单独引用下标进行赋值,类似于数组。
  • 函数
bitset <x> xxx;
xxx.count() //xxx中1的个数
xxx.size() //xxx的大小(有效元素)
xxx.test(y) //测试下标y是否为1,返回TRUE或FALSE
xxx.any() //xxx中是否有1
xxx.none() //xxx中是否没有1
xxx.all() //xxx是否全部为1

补充一下,使用[]进行判断无法防止越界,而使用test函数可以进行检查,所以推荐使用test函数。

  • 类型转换
bitset <x> xxx;
string s =xxx.to_string(); //转换成string类型
unsigned long long n = xxx.to_ullong() //转换成unsigned long long类型

bitset的大体讲解就差不多了。
最后总结一下,关于二进制的处理可以考虑使用bitset,优点是方便、相对来说节省空间,但缺点就是以空间换时间,时间要相对慢一些,请各位慎重使用。

2020 RP++

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容