📜  C++ STL中的priority_queue value_type(1)

📅  最后修改于: 2023-12-03 15:29:50.932000             🧑  作者: Mango

C++ STL中的priority_queue value_type

C++ STL 中的 priority_queue 是一个容器适配器,它提供了一种能够直接访问最大/小元素的方法,而不需要使用迭代器或指针。priority_queue 可以存储任何可比较的数据类型,其底层实现采用堆排序算法。

在 priority_queue 容器中,value_type 是指其元素的数据类型。而每个元素的数据类型必须是可排序的,因为在堆排序算法中,需要通过比较元素大小以确定元素在堆中的位置关系。

声明 priority_queue

在使用 priority_queue 容器时,需要指定其元素的数据类型。一个简单的 priority_queue 声明如下所示:

// 创建 priority_queue 以存储 int 类型的数据,并且默认降序排列
std::priority_queue<int> pq; 

在上述代码中,pq 是一个 priority_queue 对象,用于存储 int 类型的数据,并且默认降序排列。

注:若要使用升序排列,则可以使用 std::greater。例如:std::priority_queue<int, std::vector<int>, std::greater<int>> pq;

插入元素到 priority_queue 中

在 priority_queue 容器中插入元素的方法是 push()。示例如下:

// 插入元素到 priority_queue 中
pq.push(5);
pq.push(2);
pq.push(1);
pq.push(7);

在上述代码中,4 个元素被依次插入到了 priority_queue 中。最大/小元素会被自动放在队列的头部。

访问 priority_queue 中的最大/小元素

在 priority_queue 容器中,可以使用 top() 方法来访问最大/小元素。示例如下:

// 输出 priority_queue 中的最大元素
std::cout << "Max element: " << pq.top() << std::endl;

在上述代码中,使用 top() 方法访问 priority_queue 中的最大元素,并将其输出。

删除 priority_queue 中的最大/小元素

在 priority_queue 容器中,删除最大/小元素的方法是 pop()。示例如下:

// 从 priority_queue 中删除最大元素并输出
std::cout << "Popped element: " << pq.top() << std::endl;
pq.pop();

在上述代码中,使用 pop() 方法删除 priority_queue 中的最大元素,并将其输出。

获取 priority_queue 中的元素数量

在 priority_queue 容器中,可以使用 size() 方法获取其元素数量。示例如下:

// 获取 priority_queue 的元素数量
std::cout << "Size: " << pq.size() << std::endl;

在上述代码中,使用 size() 方法获取 priority_queue 的元素数量,并将其输出。

结语

priority_queue 作为 C++ STL 中的一种容器适配器,对于需要直接访问最大/小元素的场景非常适用。本文介绍了 priority_queue 中的 value_type,以及其插入/访问/删除元素的方法。希望能够对大家的学习和工作有所帮助。