bitset总结

bitset<n> b //尖括号内是长度,默认构造函数全部初始化为0
下标从0开始,因此下标是从0到n-1。以0位开始的位串是低阶位,以n-1位结束的位串是高阶位

bitset<n> b; //b有n位,每位都为0
bitset<n> b(u); //b是unsigned long型u的一个副本,不足补0
bitset<n> b(s); //b是string对象s中含有的位串的副本,不足补0,注意从s的右边开始读取,即在s中从右到左是低阶到高阶,即b和s是左右颠倒的
bitset<n> b(s, pos, n); //b是s中从位置pos开始的n个位的副本,不足补0

b.any() //检查b中是否存在置为1的二进制位,是则返回true
b.none() //检查b中是否不存在置为1的二进制位,是则返回true
b.count() //统计b中置为1的二进制位的个数
b.size() //b中二进制位的个数
b[pos] //访问b中在pos处的二进制位
b.test(pos) //检查b中在pos处的二进制位是否为1,是则返回true
b.set() //把b中所有二进制位都置为1
b.set(pos) //把b中在pos处的二进制位置为1,可以指定第二个参数,把pos处的值设为第二个参数,第二个参数默认1
b.reset() //把b中所有二进制位都置为0
b.reset(pos) //把b中在pos处的二进制位置为0
b.flip() //把b中所有二进制位逐位取反
b.flip(pos) //把b中在pos处的二进制位取反
b.to_ulong() //用b中同样的二进制位返回一个unsigned long int值
b.to_ullong() //用b中同样的二进制位返回一个unsigned long long值
b.to_string() //用b中同样的二进制位返回一个string
os << b //把b中的位集输出到os流,注意是输出来的顺序是从高阶到低阶,从右到左,和用string初始化正好一反

bitset支持位运算,直接贴函数原型了
member functions    
bitset& operator&= (const bitset& rhs) noexcept;
bitset& operator|= (const bitset& rhs) noexcept;
bitset& operator^= (const bitset& rhs) noexcept;
bitset& operator<<= (size_t pos) noexcept;
bitset& operator>>= (size_t pos) noexcept;
bitset operator~() const noexcept;
bitset operator<<(size_t pos) const noexcept;
bitset operator>>(size_t pos) const noexcept;
bool operator== (const bitset& rhs) const noexcept;
bool operator!= (const bitset& rhs) const noexcept;

non-member functions    
template<size_t N>
    bitset<N> operator& (const bitset<N>& lhs, const bitset<N>& rhs) noexcept;
template<size_t N>
  bitset<N> operator| (const bitset<N>& lhs, const bitset<N>& rhs) noexcept;
template<size_t N>
  bitset<N> operator^ (const bitset<N>& lhs, const bitset<N>& rhs) noexcept;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值