bitset

作者: Hard模式 | 来源:发表于2019-02-23 11:12 被阅读0次

首先看看bitset的定义:

A bitset stores bits (elements with only two possible values: 0 or 1, true or false, ...).

该类型的表现形式就是一系列的0/1,而且其每一位真的就是一个bit,不是 int 的 4bits/8bits,所以更节省空间。

template <size_t N> class bitset;

需要注意的是,因为是模板的 size_t N,所以需要在编译期确定其大小,并不能通过变量动态控制 bitset 的 size。

bitset<N> 中元素的编号是从右向左,由 0 到 N-1 逐渐增加。

构造

std::bitset<8> foo;
std::bitset<16> bar (0xfa2);  // 0000 1111 1010 0010
std::bitset<16> baz (std::string("0101111001")); // 0000000101111001

std::bitset (
string,  // source
pos,     // start position
n,         // number of characters to read
charT zero = charT('0'),  // character represent 0
charT one = charT('1'));  // character represent 1

访问

[]
test(size_t pos) // read-only, range safe.
size()  
count() // number of bits set as '1', 注意和 size() 区分
any()  // any bit is '1' ?
none()  // none bit is '1' eq all bits are '0'
all() // all bits are '1'

修改

set -- to 1
reset -- to 0
flip -- from 1 to 0, or from 0 to 1

bitset& set() // set all bits to one/true
bitset& set (size_t pos, bool val = true); // set bits[pos] = val
bitset& reset();
bitset& reset (size_t pos);
bitset& flip();
bitset& flip(size_t pos);

转换

可以转换为string, ul, ull

to_string()
to_ulong()
to_ullong()

应用示例

// 获得数的二进制表示,并进行相应操作,此处为反序
uint64_t reverse_bits_v2(uint64_t val) {
    std::string bits = std::bitset<64>(val).to_string();
    std::reverse(bits.begin(), bits.end());
    return std::bitset<64>(bits).to_ulong();
}

相关文章

  • bitset

    首先看看bitset的定义: A bitset stores bits (elements with only t...

  • JAVA集合类

    Vector,BitSet,Stack,Hashtable

  • bitset(位图)原理与用法

    分享自我的微信订阅号“猿in”,可以搜索关注。 Bitset基础 介绍 bitset(bitmap)也就是位图,由...

  • BitSet

    题目: 有1千万个随机数,随机数的范围在1到1亿之间。现在要求写出一种算法,将1到1亿之间没有在随机数中的数求出来...

  • BitSet

  • Java Bitset类

    一个Bitset类创建一种特殊类型的数组来保存位值。BitSet中数组大小会随需要增加。这和位向量(vector ...

  • BitSet实现原理及源码解析

    BitSet的结构原理 BitSet, 是Java对位集合抽象出的一种数据结构。它的内部维护了一个long数组,数...

  • JavaSE学习笔记——基本数据结构

    BitSet类BitSet,也就是位图,可以用比较紧凑的格式来表示给定范围的连续数据,最常见的应用就是那些需要对海...

  • C++ bitset用法

    bitset是C++语言的一个类库,用来方便地管理一系列的bit位。使用bitset需要导入头文件:#includ...

  • Bitset改进你的程序质量

    1:Bitset介绍 BitSet 是用于存储二进制位和对二进制进行操作的 自动去重Java 数据结构, 此类实现...

网友评论

      本文标题:bitset

      本文链接:https://www.haomeiwen.com/subject/stbuyqtx.html