Bitset 是一个特殊的容器类,它被设计用来存储bit(即 只有两个值的元素:0 或1,true 或 false ,...)。这个类和常规的数组很像,但是优化了存储空间:每个元素只占用一个bit(比C++中最小的类型:char 小了8倍)。每个元素(每个 bit)可以独立存取:比如,一个名为mybitset 的bitset,表达式 mybitset[3] 访问它的第四个bit,就像访问常规数组的元素那样。由于在C++中没有这么小的类型,每个元素要通过特殊的参考来访问,它模仿bool 类型。
bitset中的reference:
class bitset::reference {
friend class bitset; reference(); // no public constructor
public: ~reference();
operator bool () const; // convert to bool
reference& operator= ( bool x ); // assign from bool
reference& operator= ( const reference& x ); // assign from bit
reference& flip(); // flip bit value
bool operator~() const; // return inverse value
}
除了一些重载的运算符,提供直接访问bit,由整数和二进制串构造。Bitset也可以直接从流中以二进制的形式添加。 Bitset有固定的大小,所以它不支持插入和删除元素。 如果果不在乎没有迭代器和动态改变大小,bitset非常实用。 vector有着和Bitset类似的功能,但是vector却不是一个stl容器。还有一个是deque,它是标准 stl容器,有一个缺点是不能生产c类型的bool数组。因为deque是链表实现的。