[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.c++

my priority queue

vaclavpich

10/25/2008 5:50:00 PM

Hi all
I want to now your opinion on my priority queue. I know stl has one
very useful but I couldn't use stl. Code below shows the main part of
implementation :
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 1) class interface like std::priority_queue
template<
class _Ty,
class _Predicate = Less<_Ty>,
class _Container = Array<_Ty>
>
class StlPriorityQueuePolicy
{
_Container m_container;
public:
// common interface
_Ty& top();
void pop();
push(const _Ty& val);
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 2) class interface only pop and push
emplate<
class _Ty,
class _Predicate = Less<_Ty>,
class _Container = Array<_Ty>
>
class PushpopPriorityQueuePolicy : protected
StlPriorityQueuePolicy<_Ty, _Predicate, _Container >
{
typedef StlPriorityQueuePolicy<_Ty, _Predicate, _Container >
base;
public:
// common interface
_Ty pop(){
if(base::is_empty()) throw exception;
_Ty val = base::top();
base::pop();
return val;
};
push(const _Ty& val){
base::push(val);
}
};

emplate<
class _Ty,
class _Predicate = Less<_Ty>,
class _Container = Array<_Ty>,
class _Policy = StlPriorityQueuePolicy<_Ty, _Predicate, _Container
>
>
class PriorityQueuePolicy : public _Policy<_Ty, _Predicate,
_Container> {};
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Maybe it is too compliceted. I like the second policy
(PushpopPriorityQueuePolicy) but it has one disadvantage. Pop method
has to create new value before the value is poped from priority queue
and returned.

Can you tell me your opinion.
Thanks