SiriBlog

siriyang的个人博客


  • 首页

  • 排行榜

  • 标签115

  • 分类37

  • 归档320

  • 关于

  • 搜索

STL常用模板:Bitset位集合

发表于 2020-01-08 更新于 2021-10-29 分类于 计算机 , 技术 , C/C++ 阅读次数: Valine:
本文字数: 2.2k 阅读时长 ≈ 2 分钟

C/C++参考文档

概念

  C++ Bitsets给程序员提供一种位集合的数据结构。Bitsets使用许多二元操作符,比如逻辑和,或等。

头文件

1
#include <bitset>

名字空间

1
std

构造函数

语法:

1
2
3
4
bitset();
bitset( unsigned long val );
bitset( string val );
bitset( char val[] );

  C++ Bitsets能以无参的形式创建,或者提供一个长无符号整数,它将被转化为二进制,然后插入到bitset中。当创建bitset时,模板中提供的数字决定bitset有多长。

  例如,以下代码创建bitset,然后显示它们:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
bitset<4> bitset1;  //无参构造,长度为4,默认每一位为0

bitset<8> bitset2(12);  //长度为8,二进制保存,前面用0补充

string s = "100101";
bitset<10> bitset3(s);  //长度为10,前面用0补充

char s2[] = "10101";
bitset<13> bitset4(s2);  //长度为13,前面用0补充

cout << bitset1 << endl;  //0000
cout << bitset2 << endl;  //00001100
cout << bitset3 << endl;  //0000100101
cout << bitset4 << endl;  //0000000010101

运算符

语法:

1
!=, ==, &=, ^=, |=, ~, <<=, >>=, []

  这些操作符都可以和bitsets一起工作。它们被这样定义:

  • != 返回真如果两个bitset不相等。
  • == 返回真如果两个bitset相等。
  • &= 完成两个bitset间的与运算。
  • ^= 完成两个bitset间的异或运算。
  • |= 完成两个bitset间的或运算。
  • ~ 反置bitset (和调用 flip()类似)
  • <<= 把bitset向左移动
  • >>= 把bitset向右移动
  • [x] 返回第x个位的引用

  例如,以下代码创建一个bitset,然后向左移动4个位:

1
2
3
4
5
6
7
8
9
// 创建一个bitset
bitset<8> bs2( (long) 131 );

cout << "bs2 is " << bs2 << endl;

// 向左移动4位
bs2 <<= 4;

cout << "now bs2 is " << bs2 << endl;

  当上述代码运行时,显示:

1
2
bs2 is 10000011
now bs2 is 00110000

常用函数

any

语法:

1
bool any();

  any()函数返回真如果有位被设置为1,否则返回假。


count

语法:

1
size_type count();

  count()函数bitset中被设置成1的位的个数。


flip

语法:

1
2
bitset &flip();
bitset &flip( size_t pos );

  flip()函数反置bitset中所有的位,即将1设为0,0设为1。如果指定pos,那么只有pos上的位被反置。


none

语法:

1
bool none();

  none()返回真如果没有位被设为1,否则返回假。


reset

语法:

1
2
bitset &reset();
bitset &reset( size_t pos );

  reset()重置bitset(全部设为0),如果指定pos,那么只有pos上的位被重置。


set

语法:

1
2
bitset &set();
bitset &set( size_t pos, int val=1 );

  set()函数设置bitset上所有的位,然后返回bitset。如果指定pos,那么只有pos上的位被设置。


size

语法:

1
size_t size();

  size()返回bitset能容纳的位。

test

语法:

1
bool test( size_t pos );

  test()函数返回在pos上的位的值。


to_string

语法:

1
string to_string();

  to_string()函数返回bitset的字符串形式。


to_ulong

语法:

1
unsigned long to_ulong();

  to_ulong()返回bitset的无符号长整数形式。

-------- 本文结束 感谢阅读 --------
相关文章
  • STL常用模板:MultiSet多元集合
  • STL常用模板:MultiMap多元字典
  • STL常用模板:Map字典
  • STL常用模板:Double Ended Queue双向队列
  • STL常用模板:List链表
觉得文章写的不错的话,请我喝瓶怡宝吧!😀
SiriYang 微信支付

微信支付

SiriYang 支付宝

支付宝

  • 本文标题: STL常用模板:Bitset位集合
  • 本文作者: SiriYang
  • 创建时间: 2020年01月08日 - 15时01分
  • 修改时间: 2021年10月29日 - 18时10分
  • 本文链接: https://blog.siriyang.cn/posts/20200108151414id.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
C/C++ 文档 STL
STL常用模板:Map字典
STL常用模板:Double Ended Queue双向队列
  • 文章目录
  • 站点概览
SiriYang

SiriYang

努力搬砖攒钱买镜头的摄影迷
320 日志
33 分类
88 标签
RSS
GitHub E-Mail
Creative Commons
Links
  • 友情链接
  • 作品商铺

  1. 概念
  2. 构造函数
  3. 运算符
  4. 常用函数
    1. any
    2. count
    3. flip
    4. none
    5. reset
    6. set
    7. size
    8. test
    9. to_string
    10. to_ulong
蜀ICP备19008337号 © 2019 – 2025 SiriYang | 1.7m | 25:41
0%