//使用priority_queue:可以时vector中保存的数,做顺序/倒序的排列(利用自定义的比较函数 )
//对于那些在使用非常注重顺序的地方,可以说简单,方便,效率高。
//在实时音频流的接收端,利用priority_queue,做抖动处理
//将非常简单。可以采用类似的下面的处理方法,对收到seq number
//做排序处理



#include <iostream>
#include <queue>
using  namespace std;


typedef struct _tagTest
{
 int seq;
 bool operator <  (_tagTest &a) //重载运算符号
 {
  if(seq < a.seq)
   return true;
  return false;
 }


 bool operator >= (_tagTest &a) ////重载运算符号
 {
  return !(*this<a);
 }
}test;



typedef struct _tagcompare //自定义比较的函数
{
 bool operator() (test *a, test *b)
 {
  return *a >= *b;
 }
}compare;


typedef std::priority_queue<test *, std::vector<test * >, compare > TEST_QUEUE;


int main(int argc, char* argv[])
{
 printf(“Hello World!\n”);


 TEST_QUEUE test_queue;
    test* t= new test;
 t->seq = 1;
 test_queue.push(t);
 cout<<t->seq<<” “;


 


 test* t1= new test;
 t1->seq = 30;
 test_queue.push(t1);
 cout<<t1->seq<<” “;


 test* t2= new test;
 t2->seq = 5;
 test_queue.push(t2);
 cout<<t2->seq<<” “;


 test* t3= new test;
 t3->seq = 3;
 test_queue.push(t3);
 cout<<t3->seq<<” “;


   cout<<endl;
 for(int i=0; i = test_queue.size();i++)
 {
  test* pt = test_queue.top();
  test_queue.pop();
  cout<< pt->seq<<” “; //结果为:1,3,5,30
  delete pt;
  pt = NULL;
  
 }


 char c;
 cout<<endl<<”please entry any key…”<<endl;
 cin>>c;


 


 return 0;
}
2004年11月15日


评论

该日志第一篇评论

发表评论

评论也有版权!