c++标准模板库_联合容器_Bitsets详解

1 C++ Bitsets

    C++ Bitsets给程序员提供一种位集合的数据结构。Bitsets使用许多二元操作符,比如逻辑和,或等。

    1.1 Constructors

    语法:
    bitset();
    bitset( unsigned long val );
    C++ Bitsets能以无参的形式创建,或者提供一个长无符号整数,它将被转化为二进制,然后插入到bitset中。
    当创建bitset时,模板中提供的数字决定bitset有多长。

    1.2 Operators

    语法:
    !=, ==, &=, ^=, |=, ~, <<=, >>=, []
    这些操作符都可以和bitsets一起工作。它们被这样定义:
    != 返回真如果两个bitset不相等。
    == 返回真如果两个bitset相等。
    &= 完成两个bitset间的与运算。
    ^= 完成两个bitset间的异或运算。
    |= 完成两个
    ~ 反置bitset (和调用 flip()类似)
    <<= 把bitset向左移动
    >>= 把bitset向右移动
    [x] 返回第x个位的引用

    1.3 any

    语法:
    bool any();
    any()函数返回真如果有位被设置为1,否则返回假。

    1.4 count

    语法:
    size_type count();
    count()函数bitset中被设置成1的位的个数。

    1.5 flip

    语法:
    bitset &flip();
    bitset &flip( size_t pos );
    flip()函数反置bitset中所有的位,即将1设为0,0设为1。如果指定pos,那么只有pos上的位被反置。
    相关主题:
    ~ operator

    1.6 none

    语法:
    bool none();
    none()返回真如果没有位被设为1,否则返回假。

    1.7 reset

    语法:
    bitset &reset();
    bitset &reset( size_t pos );
    reset()重置bitset(全部设为0),如果指定pos,那么只有pos上的位被重置。

    1.8 set

    语法:
    bitset &set();
    bitset &set( size_t pos, int val=1 );
    set()函数设置bitset上所有的位,然后返回bitset。如果指定pos,那么只有pos上的位被设置。

    1.9 size

    语法:
    size_t size();
    size()返回bitset能容纳的位。
    test
    语法:
    bool test( size_t pos );
    test()函数返回在pos上的位的值。

    1.10 to_string

    语法:
    string to_string();
    to_string()函数返回bitset的字符串形式。

    1.11 to_ulong

    语法:
    unsigned long to_ulong();

    to_ulong()返回bitset的无符号长整数形式。

    举例:

#include 
#include 
using namespace std;

void main(){
	
	// 例如,以下代码创建两个bitsets,然后显示它们:
	// 创建一个8位长的bitset
	bitset<8> bs;

	// 显示这个bitset
	for (int i = (int)bs.size(); i > 0;) {
		i--;
		cout << bs[i] << " ";
	}
	cout << endl;

	// 创建另一个bitset
	bitset<8> bs2((long)131);
	// 显示
	for (int i = (int)bs2.size(); i > 0; ) {
		i--;
		cout << bs2[i] << " ";
	}
	cout << endl;
	cout << endl;

	// 创建一个bitset
	bitset<8> bs3((long)135);
	cout << "bs3 is " << bs3 << endl;
	// 向左移动4位
	bs3 <<= 4;
	cout << "now bs3 is " << bs3 << endl;
	//bitset中被设置成1的位的个数。
	cout << bs3.count()<
运行结果:
0 0 0 0 0 0 0 0
1 0 0 0 0 0 1 1

bs3 is 10000111
now bs3 is 01110000
3
now bs3 is 01110010
now bs3 is 01110000
now bs3 is 01110010
8
1
01110010
114
hello...
请按任意键继续. . .



你可能感兴趣的:(c++标准模板库_联合容器_Bitsets详解)