C ++程序中的双头优先级队列
在本教程中,我们将使用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
结论
热门推荐
10 祝女儿简短祝福语大全
11 大学新年祝福语简短创意
12 元旦适合的祝福语简短
13 朋友出远门祝福语简短
14 初六简短的祝福语
15 祝男孩生日祝福语简短
16 同事调离的祝福语简短
17 拜年红包的祝福语简短
18 妈妈生日祝福语简短励志