STL教程--特殊容器介绍

1、bitset(位段)类模板

bitset创造一个内含任意个数的位或bool值且大小固定的数组(array)。当需要管理各种标识符,并以变量形式表现出来时,可以使用bitset类模板,头文件为< bitset>。
(1)构造函数

bitset();/* 复位bieset对象中的所有位,清空为0 */
bitset(unsigned long val);/* 以十进制数val初始化bieset对象中的所有位 */

(2)成员函数

bs.any()                  是否存在值为1的二进制位
bs.none()               是否不存在值为1的二进制位或者说是否全部位为0
bs.size()                位长,也即是非模板参数值
bs.count()             值为1的个数
bs.test(pos)          测试pos处的二进制位是否为1与0做或运算
bs.set()                全部位置1
bs.set(pos)         pos位处的二进制位置1与1做或运算
bs.reset()           全部位置0
bs.reset(pos)     pos位处的二进制位置0与0做或运算
bs.flip()              全部位逐位取反
bs.flip(pos)        pos处的二进制位取反
bs.to_ulong()      将二进制转换为unsigned long输出
bs.to_string()       将二进制转换为字符串输出
~bs                  按位取反效果等效为bs.flip()
os << b              将二进制位输出到os流小值在右,大值在左

2、stack(栈)类模板

stack(栈)类模板声明在std,头文件< stack>中,定义如下:

template < class T,class Container=deque< T> >
class stack;

第1个参数为元素类型,第二个参数定义实现stack的实际容器,默认为deque。

栈的核心接口有3个:

push(const T& x);//添加一个元素
pop();//弹出一个元素
top();//返回下一个元素,但并不移除

3、queue(队列)类模板

queue(队列)类模板声明在std,头文件< queue>中,定义如下:

template < class T,class Container=deque< T> >
class stack;

第1个参数为元素类型,第二个参数定义实现stack的实际容器,默认为deque,理论上,可以使用任何容器来实现队列功能,但有个前提就是容器必须支持front()、back()、push_back()、pop_front()等。

4、Priority Queue 类模板

Priority Queue 类模板即优先队列类模板可实例化queue型容器,其中元素根据优先级被读取。接口和queue几乎相同,在优先级队列中,元素不是按顺序存储在容器中的,而是按优先级顺序存储的,默认是从小到大的准则。使用时需要包含头文件< queue>:

template < class T,class Container = vector< T>,class Compare=less< typename Container::value_type>>
class Priority Queue;

第1个参数是元素的类型,第二个参数定义了实现该功能所用容器,默认为vector,第三个参数定义的是排序规则。
Priority Queue的核心接口有3个:

push(const T& x);//添加一个元素
pop();//弹出一个元素
top();//返回下一个元素,但并不移除

你可能感兴趣的:(STL,特殊容器,bitset,优先级序列,STL教程)