【C++ Primer | 09】容器适配器

一、stack

s.push():     向栈内压入一个成员;
s.pop():      从栈顶弹出一个成员;
s.empty():    如果栈为空返回true,否则返回false;
s.top():      返回栈顶,但不删除成员;
s.size():     返回栈内元素的大小;

 

二、queue 

s.back()         返回队尾元素
s.empty()        如果队列空则返回真
s.front()        返回队首元素
s.pop()          删除队首元素
s.push()         在队尾加入一个元素
s.size()         返回队列中元素的个数
s.emplace(args)  由args构造

 

三、priority_queue

q.empty()             如果队列为空,则返回true,否则返回false  
q.size()              返回队列中元素的个数  
q.pop()               删除队具有最高优先级的元素值,但不返回其值 
q.top()               返回具有最高优先级的元素值,但不删除该元素 
q.push(item)          在基于优先级的适当位置插入新元素

1.  priority_queue允许用户为队列中元素设置优先级,放置元素的时候不是直接放到队尾,而是放置到比它优先级低的元素前面,标准库默认使用<操作符来确定优先级关系。

2.  priority_queue模板类有三个模板参数:元素类型,容器类型,比较算子。其中后两个可以省略,默认容器为vector,默认算子为less,即如果x<y判断为真,则y排到x前面,y先出队。

定义priority_queue对象的示例代码如下

priority_queue<int> q1
priority_queue<pair<int,int>> q2;
priority_queue<int, vector<int>, greater<int>> q3;//定义优先级小的先出队
#include<iostream>
#include<queue>
#include<functional>
using namespace std;

int main()
{
    priority_queue<int, vector<int>, greater<int> > que;
    for (int i = 0; i < 9; ++i)
        que.push(i);
    while (!que.empty())
    {
        cout << que.top() << " ";
        que.pop();
    }
    return 0;
}

输出结果:

 

#include<iostream>
#include<queue>
using namespace std;
struct node
{
    int x, y;
    friend bool operator < (node a, node b)  //标准库默认使用 < 来确认它们的关系,换成>就不行了哦
    {
        return a.y > b.y;   // >表示越小越优先,<表示越大越优先
    }
};
priority_queue<node> que;

int main()
{
    node v;
    for (int i = 0; i < 10; i++)
    {
        v.x = i;
        v.y = 10 - i;
        que.push(v);
    }

    while (!que.empty())
    {
        cout << que.top().x << "," << que.top().y << endl;
        que.pop();
    }
    system("pause");
    return 0;
}

 输出结果:

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值