C++标准库bitset类型学习笔记
2011-04-26 10:09
267 查看
标准库中bitset类型用来处理二进制位的有序集,bitset类型简化了位集的处理,使用bitset时需要包含头文件#include<bitset>
1、bitset对象的定义和初始化
bitset也是类模板,不过bitset类型对象之间的区别在于长度而不是类型,因此bitset模板的参数是长度类型初始化方法 | 说明 |
bitset<n> b; | b有n位,每位都为0 |
bitset<n> b(u); | b是unsigned long型u的一个副本 |
bitset<n> b(s); | b是string对象s中含有的位串的副本,s是01串 |
bitset<n> b(s, pos, n); | b是s中从位置pos开始的n个位的副本 |
2、用unsigned long值初始化bitset对象
用unsigned long值初始化bitset对象的时候,将long值转化为二进制模式,然后拷贝到bitset的右方(bitset右边为低阶位,左边为高阶位),string位数多了将被截断,少了bitset将在前面补零。3、用string对象初始化bitset对象
从string对象初始化bitset对象,需要注意的是,复制拷贝相当于从string位模式平移到了bitset。例如:
string str(”11001010”);
bitset<32> bitvec(str);
这个时候,bitvec是这样的:0000 0000 0000 0000 0000 0000 1100 1010最右边是bitset的低阶位,即bitvec[0],bitset[1] …
4、bitset对象上的操作
操作调用方式 | 操作说明 |
b.any() | 测试b中是否有存在1的位 |
b.none() | 测试b中是否全0 |
b.count() | 测试b中置1的位个数 |
b.size() | b中所有二进制位个数 |
b[pos] | 访问下标为pos位置的位值 |
b.test(pos) | 测试pos位置的二进制位是否为1 |
b.set() | 将b所有位置1 |
b.set(pos) | 将b中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值 |
os << b | 将b的位集合直接输出到os流 |
Ø b.cout和b.size()返回的是size_t类型,该类型定义在cstddef头文件中(C标准头文件stddef.h的C++版本)
Ø b[pos]可以作为左值,即可以用来改变pos位置的值
相关文章推荐
- C++ Primer学习笔记2--c++标准库中的 vector、string 和 bitset 类型
- C++学习笔记--标准库类型(vector,iterator,bitset)(三)
- C++ 学习笔记(17)tuple类型、bitset类型、随机数(引擎和分布)、IO库(操纵符、未格式化输入输出、随机访问)
- C++标准库vector类型学习笔记
- c++标准库类型笔记 自己学习备忘用的
- C++标准库类型vector学习笔记
- C++学习笔记--标准库类型(vector,iterator,bitset)(二)
- C++标准库string类型学习笔记
- 【C++ Primer】【学习笔记】【第三章】标准库类型之:bitset类型
- C++标准库迭代器Iterator类型学习笔记
- C++标准库string类型学习笔记
- C++学习笔记--标准库类型(vector,iterator,bitset)(一)
- [C#] 类型学习笔记二:详解对象之间的比较
- FlashCS3学习笔记5-数据类型
- java学习笔记三——数据类型转换
- MySQL学习笔记之十八 优化之数据类型问题
- Javascript学习笔记(数据类型)
- Python3学习笔记:基本数据类型
- Python3 学习笔记3_基本数据类型_20180222
- c++学习笔记之变量和基本类型(2)