struct Info {
string name;
float score;
bool operator < (const Info &a) const {
return score < a.score;//大顶堆
}
};
int main() {
priority_queue<Info> pq;
Info info;
info.name = "Jack";
info.score = 68;
pq.push(info);
info.name = "Bomi";
info.score = 18;
pq.push(info);
info.name = "Peti";
info.score = 90;
pq.push(info);
while (!pq.empty()) {
cout << pq.top().name << "" << pq.top().score << endl;
pq.pop();
}
return 0;
}:
输出:
Peti90
Jack68
Bomi18
struct Info {
string name;
float score;
bool operator < (const Info &a) const {
return a.score < score;//小顶堆
}
};
int main() {
priority_queue<Info> pq;
Info info;
info.name = "Jack";
info.score = 68;
pq.push(info);
info.name = "Bomi";
info.score = 18;
pq.push(info);
info.name = "Peti";
info.score = 90;
pq.push(info);
while (!pq.empty()) {
cout << pq.top().name << "" << pq.top().score << endl;
pq.pop();
}
return 0;
}
输出:
Bomi18
Jack68
Peti90
本文展示了如何使用C++自定义类型结构`Info`来创建大顶堆和小顶堆。`Info`包含姓名和分数字段,并通过重载`<`运算符定义比较逻辑。大顶堆按分数降序排列,而小顶堆则按分数升序排列。通过`priority_queue`容器,堆被用来存储和输出信息,展示了不同的输出顺序。

515

被折叠的 条评论
为什么被折叠?



