利用priority_queue实现top K

来源:互联网 发布:arm linux gcc 4.8.3 编辑:程序博客网 时间:2024/06/05 03:39
#include <bits/stdc++.h>using namespace std;class fix_priority_queue {intmax_size;priority_queue <int, vector<int>, greater<int> >q;public:fix_priority_queue( int max_size ){this->max_size = max_size;}void add( int x ){if ( q.size() < max_size ){q.push( x );}else{int a = q.top();if ( a < x ){q.pop();q.push( x );}}}void pop(){q.pop();}int top(){return(q.top() );}bool empty(){return(q.empty() );}};int main(){fix_priority_queue q( 5 );srand( time( 0 ) );for ( int i = 0; i != 10; ++i ){int a = rand();printf( "%d ", a );q.add( a );}printf( "\n" );while ( !q.empty() ){printf( "%d ", q.top() );q.pop();}return(0);}

0 0
原创粉丝点击