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;
}