STL特殊容器之bitset

本文介绍了C++ STL中的特殊容器bitset,包括概述、bitset的操作函数以及程序示例。bitset用于创建固定大小的位数组,常用于位运算和布尔逻辑操作。文章详细讲解了bitset的构造、拷贝、操作函数以及如何在实践中使用它。
摘要由CSDN通过智能技术生成

一、概述

bitset构造出一个内含位(bit)或布尔(bool)值且大小固定的array。不能改变bitset内位的数量。这个参数由template参数决定的。如果需要一个可变长度的位容器,考虑使用vector<bool>。Class bitset定义于头文件<bitset>中,有一个template参数用来指定位的数量:

namespace std {
    template <size_t Bits>
    class bitset;
}

此处template的参数并不是一个型别,而是一个不带正负号的整数。

二、bitset操作函数

1. 生成、拷贝和销毁

bitset<bits>::bitset()
- default构造函数
- 生成一个bitset,所有值初始化为0

bitset<50> flags;    //flags: 000000...000000
bitset<bits>::bitset(unsigned long value)
- 产生一个bitset,以整数值value的二进制位作为初值
- 如果value的值太小,前面不足的位被设为0

bitset<50> flags(7);    //flags: 000000...000111
explicit bitset<bits>::bitset (const string& str)
bitset<bits>::bitset (const string& str, string::size_type str_idx)
bitset<bits>::bitset (const string& str, string::size_type str_idx, string::size_type str_num)
- 以上所有形式都用来初始化bitset,以字符串str或其子串加以初始化。
- 该字符串或者子串中只能包含字符'0''1'
- str_idx是str中用来初始化的第一个字符
- 如果省略str_num,从str_idx到str结束的所有字符都将用于初始化
- 若字符串中字符数量少于所需,前面多余的位置将被设为初值0
- 若字符串中字符数量多于所需,后面多余的位置将被忽略
- 如果str_idx>str.size(),抛出out_of_range异常
- 如果有字符非'0''1',抛出invalid_argument异常

bitset<50> flags(string("1010101"));    //flags: 000...0001010101
bitset<50> flags(string("1111000"),2,3);    //flags: 000...00000110

2. 非更易性操作

size_t bitset<bits>::size() const
- 返回位的个数

size_t bitset<bits>::count() const
- 返回“位值为1”的位个数

bool bitset<bits>::any() const
- 判断是否有任何位被设为
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值