队列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 else 26 { 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 }
原文地址:http://www.cnblogs.com/superzzh/p/3825650.html