C++ STL中的priority_queue::empty() 和priority_queue::size()
优先队列是一种容器适配器,专门设计使队列中的第一个元素是所有元素中最大或最小的。然而,在C++ STL中(默认情况下),最大的元素位于队列的顶部。我们还可以通过在创建优先队列时简单地传递额外的参数来创建置顶最小元素的优先队列。
priority_queue::empty()
empty()函数用于检查优先队列容器是否为空。
语法:
pqueuename.empty()
参数:
不传参数
返回值:
如果优先队列为空,则为真;
否则为假
时间复杂度:O(1)
示例:
输入: pqueue = 3、2、1
pqueue.empty();
输出:假
输入: pqueue
pqueue.empty();
输出:真
错误和异常
1. 如果传递参数,则显示错误。2. 没有异常抛出保证。
// CPP program to illustrate
// Implementation of empty() function
#include <iostream>
#include <queue>
using namespace std;
int main()
{
priority_queue<int> pqueue;
pqueue.push(1);
// Priority Queue becomes 1
if (pqueue.empty())
{
cout << "True";
}
else
{
cout << "False";
}
return 0;
}
输出:
假
应用
给定一个整数优先队列,找到所有整数的总和。
输入: 8、6、3、2、1
输出: 20
算法
1. 检查优先队列是否为空,如果不为空,则将顶部元素添加到初始化为0的变量中,并弹出顶部元素。 2. 重复此步骤直到优先队列为空。 3. 打印变量的最终值。
// CPP program to illustrate
// Application of empty() function
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int sum = 0;
priority_queue<int> pqueue;
pqueue.push(8);
pqueue.push(6);
pqueue.push(3);
pqueue.push(2);
pqueue.push(1);
// 队列变为8,6,3,2,1
while (!pqueue.empty())
{
sum = sum + pqueue.top();
pqueue.pop();
}
cout << sum;
return 0;
}
输出:
20
priority_queue::size()
size()函数用于返回优先队列容器的大小或容器中的元素数。
时间复杂度:O(1)
语法:
pqueuename.size()
参数:
不传参数
返回值:
容器中元素的数目
示例:
输入: pqueue = 3、2、1
pqueue.size();
输出:3
输入: pqueue
pqueue.size();
输出:0
错误和异常
1. 如果传递参数,则显示错误。2. 没有异常抛出保证。
// CPP程序,演示size()函数的实现
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int sum = 0;
priority_queue<int> pqueue;
pqueue.push(8);
pqueue.push(6);
pqueue.push(3);
pqueue.push(3);
pqueue.push(1);
// 优先级队列变成8、6、3、2、1
cout << pqueue.size();
return 0;
}
输出:
5
应用 :给定一个整数优先队列,找出所有整数的总和。
输入: 8, 6, 3, 2, 1
输出: 20
算法 1. 检查优先队列的大小是否为0,如果不是则将顶部元素添加到初始变量0上,并弹出顶部元素。 2. 重复此步骤,直到优先队列的大小变为0。 3. 打印变量的最终值。
// CPP程序,演示size()函数的应用
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int sum = 0;
priority_queue<int> pqueue;
pqueue.push(8);
pqueue.push(6);
pqueue.push(3);
pqueue.push(2);
pqueue.push(1);
// 队列变成8、6、3、2、1
while (pqueue.size() > 0) {
sum = sum + pqueue.top();
pqueue.pop();
}
cout << sum;
return 0;
}
输出:
20
让我们以表格形式看看它们之间的区别 -:
ID | priority_queue::empty() | priority_queue::size() |
---|---|---|
1. | 它用于检查优先队列是否为空。 | 它用于返回优先队列中的元素数。 |
2. | 它的语法是 -:empty(); | 它的语法是 -:size(); |
3. | 它不需要任何参数。 | 它不需要任何参数。 |
4. | 它的返回类型是布尔型。 | 它的返回类型是整型。 |
5. | 它的复杂度为常数。 | 它的复杂度为常数。 |