get:
1.优先队列的声明:
qriority_queue<int, vector<int>, greater<int> >q;
q.pop();//将最前面的一个数出队(最大或者最小的数)
q.top();//将最前面的一个数的值输出(最大或者最小的数)
q.push();//入队
2.set函数:
set<int>a;
a.insert();//将某个数加入
a.count();//查找某个数是否存在
紫书代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
using namespace std;
int xx[] = {2, 3, 5};
int main()
{
priority_queue<long long int, vector<long long int>, greater<long long int> >q;
set<long long int>s;
s.insert(1);
q.push(1);
for(int i=1;;i++)
{
long long int x = q.top();
q.pop();
if(i==1500)
{
printf("The 1500'th ugly number is %lld.\n", x);
break;
}
for(int j=0;j<3;j++)
{
long long int y = x * xx[j];
if(!s.count(y))
{
s.insert(y);
q.push(y);
}
}
}
return 0;
}