STL学习之queue适配器

queue

FIFO queue

queue是容器适配器类型,它支持FIFO(first in first out)即元素插入从"尾部(back)",弹出从“前面(front)”。

底层容器可以是任何的标准容器类模板或者其他的具体的设计容器类。仅有的要求是需要支持下面的操作:

  • front()
  • back()
  • push_back()
  • pop_front()

因此可以使用dequelist这样标准容器类模板。默认的,如果对一个特殊的队列类没有指定容器类,使用deque标准类模板。

在c++标准的模板类的定义中,queue是有两个模板参赛的模板:

template < class T, class Container = deque > class queue;

参数:

T:元素类型

Container:用于存储和访问元素的底层容器类型。

成员函数

构造函数、empty函数、size函数和stack栈中的函数类似,此处不再介绍,如果想了解可以察看本博客stack相关。

queue::back

value_type&back();
const value_type& back() const;
访问最后一个元素

返回队列中最后一个元素的引用。这是队列中的“最新”的元素,最后一个插入队列中的元素。

此函数类似于stack栈适配器中的top函数功能。

queue::front

value_type&f();
const value_type& front() const;
访问下一个元素

返回队列中的下一个元素的引用。这是队列中“最老”的元素,并且当调用queue::pop成员函数时,也是弹出此元素。

实例:

#include 
#include 

using namespace std;

int main(void)
{
  queue  myqueue;
  
  myqueue.push(06);
  myqueue.push(27);
  myqueue.front() -= myqueue.back();

  cout << "myqueue.front is now " << myqueue.front() << endl;
  return 0;
}

执行结果:

liujl@liujl-Rev-1-0:~/mycode/STL$ g++ queue.cpp -o queue
liujl@liujl-Rev-1-0:~/mycode/STL$ ./queue
myqueue.front is now -21

queue::pop

void pop();

删除下一个元素

删除队列中的下一个元素。并且size减1。这个删除的元素是队列中“最老”的元素,并且这个值可以通过调用queue::front函数检索到。

queue::push

void push(const T& x);

插入元素

在队列的尾部增加一个新的元素,此元素成为队列中最后一个元素。新元素的值为x的一个拷贝。

实例:

#include 
#include 

using namespace std;

int main(void)
{
  queue myqu;
  int myInt;
  cout << "Please enter some integers (enter 0 to end):" << endl;
  
  do
  {
     cin >> myInt;
     myqu.push(myInt);
  }while(myInt);

  cout << "myqu contains:" << endl;
  while (!myqu.empty())
  {
     cout << " " << myqu.front();
     myqu.pop();
  }
  cout << endl;
  return 0;
}
执行结果:

liujl@liujl-Rev-1-0:~/mycode/STL$ g++ queue_pop_push.cpp -o queue_poppush
liujl@liujl-Rev-1-0:~/mycode/STL$ ./queue_poppush 
Please enter some integers (enter 0 to end):
9
8
7
6
5
4
3
2
1
0
myqu contains:
 9 8 7 6 5 4 3 2 1 0

你可能感兴趣的:(c++学习)