V
vaclavpich
Hi all,
I want to know your opinion about my implemetaion of priority queue. I
couldn't use std:riority_queue so I've written my. I designed two
kinds of interface but I'm not sure that this is good idea.
Please write me what do you think about this :
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 1) first class is similar to std:riority_queue
template<
class _Ty,
class PriorityQueuePolicy
{
_Container m_c;
public:
// common interface like std:riority_queue
void push(const _Ty& val);
_Ty& top();
void pop();
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 2) this class has only pop and push
template<
class _Ty,
class PushPopPolicy : protected PriorityQueuePolicy<_Ty, _Predicate,
_Container >
{
typedef PriorityQueuePolicy<_Ty, _Predicate, _Container > base;
public:
// common interface like std:riority_queue
void push(const _Ty& val){
base:ush(val);
}
_Ty pop(){
if( base::empty()) throw exception;
_Ty val = base::top();
base:op();
return val;
}
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
template<
class _Ty,
class _Predicate = Less<_Ty>,
class PriorityQueue : public _Policy {};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Thanks
I want to know your opinion about my implemetaion of priority queue. I
couldn't use std:riority_queue so I've written my. I designed two
kinds of interface but I'm not sure that this is good idea.
Please write me what do you think about this :
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 1) first class is similar to std:riority_queue
template<
class _Ty,
class PriorityQueuePolicy
{
_Container m_c;
public:
// common interface like std:riority_queue
void push(const _Ty& val);
_Ty& top();
void pop();
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 2) this class has only pop and push
template<
class _Ty,
class PushPopPolicy : protected PriorityQueuePolicy<_Ty, _Predicate,
_Container >
{
typedef PriorityQueuePolicy<_Ty, _Predicate, _Container > base;
public:
// common interface like std:riority_queue
void push(const _Ty& val){
base:ush(val);
}
_Ty pop(){
if( base::empty()) throw exception;
_Ty val = base::top();
base:op();
return val;
}
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
template<
class _Ty,
class _Predicate = Less<_Ty>,
class PriorityQueue : public _Policy {};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Thanks