在本教程中,我们将使用c ++中的集合创建一个双优先级队列。
让我们看看创建双端队列的步骤。
根据需要创建一个具有名称的结构。
使用该集合为队列创建一个变量。
返回队列大小的size方法。
is_empty方法,返回队列是否为空。
insert方法,用于将新元素插入队列。
从队列左侧返回元素的get_start方法。
从队列右侧返回元素的get_end方法。
delete_start方法,该方法从左侧删除第一个元素。
delete_end方法从右侧删除第一个元素。
让我们看一下代码。
#include <bits/stdc++.h> using namespace std; struct doubleEndedQueue { set<int> s; int size() { return s.size(); } string is_empty() { return s.size() == 0 ? "True" : "False"; } void insert(int x) { s.insert(x); } int get_start() { return *(s.begin()); } int get_end() { return *(s.rbegin()); } void delete_start() { if (s.size() == 0) { return; } s.erase(s.begin()); } void delete_end() { if (s.size() == 0) { return; } auto end = s.end(); end--; s.erase(end); } }; int main() { doubleEndedQueue d; cout << "是空的: " << d.is_empty() << endl; d.insert(1); d.insert(2); d.insert(3); d.insert(4); d.insert(5); cout << "是空的: " << d.is_empty() << endl; cout << "end: " << d.get_end() << endl; d.delete_end(); cout << "end: " << d.get_end() << endl; cout << "start: " << d.get_start() << endl; d.delete_start(); cout << "start: " << d.get_start() << endl; return 0; }输出结果
如果运行上面的代码,则将得到以下结果。
是空的: True 是空的: False end: 5 end: 4 start: 1 start: 2