欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

队列queue

程序员文章站 2024-03-18 08:07:10
...

一、基本操作:

Q.back( ) 返回队尾元素

Q .empty( ) 队列是否为空,是的话返回true,否则返回false

Q.push( x ) 在队尾加入元素x

Q.top( ) 返回队头元素

Q.front( ) 返回队头元素

Q.size( ) 返回队列中元素的个数

 

二、队列类型

主要有这几种

queue<int> Q; //普通队列
queue<node> Q; //普通结构体队列
------------------------------------------------------- 

priority_queue<int> Q; //默认从大到小排列
priority_queue <int,vector<int>,less<int> > Q;//(注意两个>之间要有空格)由大到小 
priority_queue <int,vector<int>,greater<int> > Q; //由小到大
--------------------------------------------------------
 
struct node
{ 
	int x,y;
	bool operator < (const node & a) const
	{ return x<a.x; } //若需要有小到大排序就把这一行的< 改成 >

};
priority_queue <node> Q;//结构体自定义自动排序队列 

 

三、双端队列(dqueue)

函数 描述
c.assign(beg,end)
c.assign(n,elem) 
将[beg; end)区间中的数据赋值给c。
将n个elem的拷贝赋值给c。
c.at(idx)  传回索引idx所指的数据,如果idx越界,抛出out_of_range。
c.back()  传回最后一个数据,不检查这个数据是否存在。
c.begin()  传回迭代器重的可一个数据。
c.clear()  移除容器中所有数据。
deque<Elem> c
deque<Elem> c1(c2)
Deque<Elem> c(n)
Deque<Elem> c(n, elem)
Deque<Elem> c(beg,end)
c.~deque<Elem>() 
创建一个空的deque。
复制一个deque。
创建一个deque,含有n个数据,数据均已缺省构造产生。
创建一个含有n个elem拷贝的deque。
创建一个以[beg;end)区间的deque。
销毁所有数据,释放内存。
c.empty()  判断容器是否为空。
c.end()  指向迭代器中的最后一个数据地址。
c.erase(pos)
c.erase(beg,end) 
删除pos位置的数据,传回下一个数据的位置。
删除[beg,end)区间的数据,传回下一个数据的位置。
c.front()  传回地一个数据。
get_allocator  使用构造函数返回一个拷贝。
c.insert(pos,elem) 
c.insert(pos,n,elem)
c.insert(pos,beg,end)
在pos位置插入一个elem拷贝,传回新数据位置。
在pos位置插入>n个elem数据。无返回值。
在pos位置插入在[beg,end)区间的数据。无返回值。
c.max_size()  返回容器中最大数据的数量。
c.pop_back()  删除最后一个数据。
c.pop_front()  删除头部数据。
c.push_back(elem)  在尾部加入一个数据。
c.push_front(elem)  在头部插入一个数据。
c.rbegin()  传回一个逆向队列的第一个数据。
c.rend()  传回一个逆向队列的最后一个数据的下一个位置。
c.resize(num)  重新指定队列的长度。
c.size()  返回容器中实际数据的个数。
C1.swap(c2) 
Swap(c1,c2)
将c1和c2元素互换。
同上操作。

注:除了dqueue之外,其他的队列都不支持clear( )直接清空,可以使用赋值一个空队列的方法清空:Q=queue<int> () ;

相关标签: STL queue 队列