operator<和priority_queue
时间: 2023-10-19 19:25:22 浏览: 103
编写优先队列数据(priority_queue)
5星 · 资源好评率100%
operator< 是一个运算符重载,用于比较两个对象的大小。它通常在类中定义,以实现自定义的对象比较规则。比如,对于一个自定义的类 MyClass,可以重载 operator< 运算符来定义对象之间的比较方式。
priority_queue 是 C++ 标准库中的一个容器适配器,它提供了一种基于优先级的队列的实现。priority_queue 可以存储各种类型的元素,并且在插入元素时会根据一定的排序规则自动调整元素的顺序。默认情况下,priority_queue 使用 operator< 运算符来确定元素的优先级。
在使用 priority_queue 时,你可以通过重载 operator< 运算符来定义元素之间的比较规则。这样,priority_queue 在插入和弹出元素时会根据该比较规则来进行排序和调整顺序。
例如,假设有一个自定义类 Person,可以按照年龄来定义比较规则。可以重载 operator< 运算符如下:
```cpp
class Person {
public:
string name;
int age;
bool operator<(const Person& other) const {
return age < other.age;
}
};
```
然后,可以使用 priority_queue 存储 Person 对象并根据年龄进行排序:
```cpp
priority_queue<Person> pq;
Person p1{"John", 25};
Person p2{"Alice", 30};
Person p3{"Bob", 20};
pq.push(p1);
pq.push(p2);
pq.push(p3);
while (!pq.empty()) {
Person p = pq.top();
cout << p.name << " (" << p.age << ")" << endl;
阅读全文