C++中的queue使用总结

queue是队列,是一种先进先出的数据结构

类模板如下:

template < class T, class Cont = deque<T> >
class queue{
    ...
};

Cont指定实现的类型,默认是deque,也可以用list

定义队列的示例:

queue<int> q;

成员函数

q.push(i); //将i添加到队列末尾
q.pop();   //弹出队列第一个元素

q.top();   //返回或修改第一个元素
q.front(); //返回或修改第一个元素  这两个成员函数在不同的编译器有不同的支持

q.size();  //返回队列元素个数
q.empty(); //判断队列是否为空
q.back();  //返回队列最后一个元素
优先队列

优先队列就是对队列中的元素进行排序。
默认用vector实现,也可以用deque实现

类模板定义:

template < class T, class Container = vector <T>, class Compare = less<T> >
class priority_queue{
    ...
};

T的元素类型
Container是容器类型
Compare的元素比较器

与set不同,priority_queue是用堆排序来实现的,所以元素在内部不是有序的,但是总还是能保证最大的元素在堆顶

优先队列定义:

priority_queue<Type, Container, Functional>

//升序队列
priority_queue <int,vector<int>,greater<int> > q;
//降序队列
priority_queue <int,vector<int>,less<int> >q;

//greater和less是std实现的两个函数对象类(就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个函数对象类了)
q.push();
q.top();  //返回优先队列最上边的元素
q.pop();
q.empty();
q.size();

如果是自定义的结构体,可以进行运算符的重载来进行比较排序。

举例:

priority_queue<int> q;
q.push(2);
q.push(5);
q.push(6);
q.push(3);
cout<<q.size()<<endl;
while(q.empty() == false){
    cout<<q.top()<<" ";
    q.pop();
}
cout<<endl;
cout<<q.size()<<endl;

输出

4
6 5 3 2
0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值