C ++中用于结构或类的STL优先级队列
STL Priority Queue是maxheap的实现。
这是一个STL优先队列结构的C ++程序。
算法
BeginDefine a structure of type student.
Initialize variables in student structure.
Define another structure of type comparemarks
Overload the variables of student structure in comapremarks
structure.
Use priority queue with structure.
Insert some elements in priority queue using student structure.
While the queue is not empty do
Print the elements.
End.
范例程式码
#include <iostream>#include <queue>
using namespace std;
#define ROW 6
#define COL 3
struct student { //defining the student structure
int roll,marks;
student(int roll, int marks)
: roll(roll), marks(marks)
{
}
};
struct comparemarks{ // defining the comparemarks structure
bool operator()(student const& s1, student const& s2)
//重载了学生结构的运算符
{
return s1.marks < s2.marks;
}
};
int main(){
priority_queue<student, vector<student>, comparemarks> M;
//使用优先级队列。我们必须使用这种类型的语法来使用优先级队列。
int a[ROW][COL] = {{15, 50}, {16, 60},
{18,70}, {14, 80}, {12, 90}, {20, 100}};
for (int i = 0; i < ROW; ++i) {
M.push(student(a[i][0], a[i][1])); //inserting variables in the queue
}
cout<<"priority queue for structure ::"<<endl;
while (!M.empty()) {
student s = M.top();
M.pop();
cout << s.roll << " " << s.marks << "\n"; //printing the values
}
return 0;
}
输出结果
priority queue for structure ::20 100
12 90
14 80
18 70
16 60
15 50
以上是 C ++中用于结构或类的STL优先级队列 的全部内容, 来源链接: utcz.com/z/343331.html