【语法】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",如果输入的不是01的字符,只取该字符前面的二进制位.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处的二进制位是否为1unsigned long to_ulong( )用同样的二进制位返回一个unsigned longstring to_string ()返回对应的字符串.
原创粉丝点击