首页 > 代码库 > 队列queue
队列queue
队列queue也是一种线性结构,我们可以再其两端进行操作,它是一种属于先进先出的结构(FIFO)。
数据在只能在队尾进入,且只能在队首出去。
队列与栈差不多,基本操作如下:
1.queue::size()
2.queue::empty()
3.queue::push(typename t)
4.queue::pop() 删除队首元素
5.queue::front() 访问队首元素
6.queue::back() 访问队尾元素
1 #include<IOSTREAM> 2 #include<QUEUE> 3 4 using namespace std; 5 6 int main() 7 { 8 queue<int> a; 9 int i;10 for(i=0;i<5;i++)11 {12 a.push(i);13 }14 cout<<a.size()<<endl;15 cout<<a.front()<<endl;16 cout<<a.back()<<endl;17 a.pop();18 cout<<a.size()<<endl;19 cout<<a.front()<<endl;20 cout<<a.back()<<endl;21 if (a.empty())22 {23 cout<<"empty!\n";24 }25 else26 {27 cout<<"it has "<<a.size()<<" ge yuansu!\n";28 }29 return 0;30 }
在<queue>中还定义了一另一个非常有用的模板类priority_queue(优先队列),(我还用到过。。。。)优先队列不是按照入队的顺序出列,而是按照队列中元素的优先权顺序出队。(默认大者优先,也可以指定自己的算子来改变优先顺序)
priority_queue模板类有3个参数,第一个是元素类型,第二个是容器类型,第三个是比较算子。后2个参数可以省略,默认容器是vector,默认算子是less,即小的往前排,大的往后排,出队时队尾的元素出队。
1 #include <IOSTREAM> 2 #include <QUEUE> 3 4 using namespace std; 5 6 int main() 7 { 8 priority_queue<int,vector<int>,less<int> > a; 9 a.push(1);10 a.push(18);11 a.push(16);12 a.push(31);13 if (a.empty())14 {15 cout<<"empty!\n";16 }17 cout<<a.size()<<endl;18 for(int i=0;i<4;i++)19 {20 cout<<a.top()<<endl;21 a.pop();22 }23 if (a.empty())24 {25 cout<<"empty!\n";26 }27 return 0;28 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。