//使用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日
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=170878