queue+priority_queue+deque

C++ Queues(队列)

C++队列是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。

back() 返回最后一个元素
empty() 如果队列空则返回真
front() 返回第一个元素
pop() 删除第一个元素
push() 在末尾加入一个元素
size() 返回队列中元素的个数

deque

C++ Double Ended Queues(双向队列)

双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样)。

Constructors 创建一个新双向队列
Operators 比较和赋值双向队列
assign() 设置双向队列的值
at() 返回指定的元素
back() 返回最后一个元素
begin() 返回指向第一个元素的迭代器
clear() 删除所有元素
empty() 返回真如果双向队列为空
end() 返回指向尾部的迭代器
erase() 删除一个元素
front() 返回第一个元素
get_allocator() 返回双向队列的配置器
insert() 插入一个元素到双向队列中
max_size() 返回双向队列能容纳的最大元素个数
pop_back() 删除尾部的元素
pop_front() 删除头部的元素
push_back() 在尾部加入一个元素
push_front() 在头部加入一个元素
rbegin() 返回指向尾部的逆向迭代器
rend() 返回指向头部的逆向迭代器
resize() 改变双向队列的大小
size() 返回双向队列中元素的个数
swap() 和另一个双向队列交换元素

C++ Priority Queues(优先队列)

C++优先队列类似队列,但是在这个数据结构中的元素按照一定的断言排列有序。

empty() 如果优先队列为空,则返回真
pop() 删除第一个元素
push() 加入一个元素
size() 返回优先队列中拥有的元素的个数
top() 返回优先队列中有最高优先级的元素
#include <iostream>
#include <queue>
using namespace std;
int main(int argc, char const *argv[]) {
  vector<int> q;
  q.push_back(7);
  q.push_back(2);
  q.push_back(5);
  q.push_back(6);
  q.push_back(9);
  /*最大优先队列*/
  priority_queue<int> bq;//从大到小排序
  for(int i = 0;i < q.size();i++)
    bq.push(q[i]);//往队列中增加元素

  //遍历输出元素
  while(!bq.empty()){
    cout << bq.top() << endl;
    bq.pop();
  }
  cout << "----------------------------"<< endl;
  //重新 构建队列
  for(int i = 0;i < q.size();i++)
    bq.push(q[i]);

  //新增加元素 元素会 进入到相应的位置 而不是队尾
  bq.push(1);
  bq.push(4);

  while(!bq.empty()){
    cout << bq.top() << endl;
    bq.pop();
  }
cout << "----------------------------"<< endl;
  /*最小优先队列*/
  priority_queue<int,vector<int>,greater<int> > pq;//从小到小排序
  for(int i = 0;i < q.size();i++)
    pq.push(q[i]);//往队列中增加元素

  //遍历输出元素
  while(!pq.empty()){
    cout << pq.top() << endl;
    pq.pop();
  }
  return 0;
}

猜你喜欢

转载自blog.csdn.net/WX_1218639030/article/details/83242402