【语法】STL位图
来源:互联网 发布:数控车床圆弧编程实例 编辑:程序博客网 时间:2024/05/16 05:19
#include <bitset>using namespace std;#define debug_int main(){ bitset<100> a; bitset<100> b(3); bitset<100> c("00001"); a.set(10); a.test(10); a.reset(10); a.test(10); auto str = a.to_string(); auto num = a.to_ullong(); return 0;}
**bitset 用法整理****构造函数**bitset<n> b;b有n位,每位都为0.参数n可以为一个表达式.如bitset<5> b0;则"b0"为"00000";bitset<n> b(unsigned long u);b有n位,并用u赋值;如果u超过n位,则顶端被截除如:bitset<5>b0(5);则"b0"为"00101";bitset<n> b(string s);b是string对象s中含有的位串的副本string bitval ( "10011" );bitset<5> b0 ( bitval4 );则"b0"为"10011";bitset<n> b(s, pos);b是s中从位置pos开始位的副本,前面的多余位自动填充0;string bitval ("01011010");bitset<10> b0 ( bitval5, 3 );则"b0" 为 "0000011010";bitset<n> b(s, pos, num);b是s中从位置pos开始的num个位的副本,如果num<n,则前面的空位自动填充0;string bitval ("11110011011");bitset<6> b0 ( bitval5, 3, 6 );则"b0" 为 "100110";os << b把b中的位集输出到os流os >>b输入到b中,如"cin>>b",如果输入的不是0或1的字符,只取该字符前面的二进制位.bool any( ) 是否存在置为1的二进制位?和none()相反bool none( ) 是否不存在置为1的二进制位,即全部为0?和any()相反.size_t count( )二进制位为1的个数.size_t size( )二进制位的个数flip()把所有二进制位逐位取反flip(size_t pos)把在pos处的二进制位取反bool operator[]( size_type _Pos )获取在pos处的二进制位set()把所有二进制位都置为1set(pos)把在pos处的二进制位置为1reset()把所有二进制位都置为0reset(pos)把在pos处的二进制位置为0test(size_t pos)在pos处的二进制位是否为1?unsigned long to_ulong( )用同样的二进制位返回一个unsigned long值string to_string ()返回对应的字符串.
阅读全文
0 0