STL教程--(4)特殊容器介绍

在这里插入图片描述

1、bitset(位段)类模板

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

bitset<int Size> bitName;/*构造一个bitset对象,含有Size位,且其中所有位均为0 */
bitset<int Size> bitName(unsigned long val);/* 构造一个bitset对象,含有Size位,并以十进制数val初始化bitset对象中的所有位 */
bitset<int Size> bitName(string val);/* 构造一个bitset对象,含有Size位,并以字符串val初始化bitset对象中的所有位 */

(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。

栈的成员函数只有5个:

push(const T& x);//添加一个元素
pop();//弹出一个元素
top();//返回下一个元素,但并不移除
size();  //返回元素个数
empty();//判断是否为空

3、queue(队列)类模板

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

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

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

int size();// 获取元素个数
Type front();//	获取指向第一个元素的迭代器
void push(Type val);// 在末尾插入数据
void pop();//删除最后一个元素
bool empty();//判断队列是否为空

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个:

void  push(const T& x);//添加一个元素
void  pop();//弹出一个元素
T top();//返回下一个元素,但并不移除
int size();// 获取元素个数
bool empty();//判断队列是否为空

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chiang木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值