Program Listing for File PriorityQueue.h
↰ Return to documentation for file (ADS/priority/PriorityQueue.h)
/*--------------------------------------------------------------------------*/
/*-------------------------- File PriorityQueue.h --------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/
#ifndef __ADS_PriorityQueue
#define __ADS_PriorityQueue
/* self-identification: #endif constant */
/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/
#include <concepts>
#include <cstddef>
#include <memory>
#include <stdexcept>
#include <utility>
#include <vector>
/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/
namespace ADS {
/*--------------------------------------------------------------------------*/
/*-------------------------------- CONCEPT ---------------------------------*/
/*--------------------------------------------------------------------------*/
template< class Q >
concept PriorityQueue = requires( Q q , const Q cq ,
const typename Q::Item & x ,
const typename Q::Priority & p ,
typename Q::Handle y ) {
{ cq.empty() } -> std::same_as< bool >;
{ cq.min() } -> std::convertible_to< typename Q::Item >;
{ q.deleteMin() } -> std::convertible_to< typename Q::Item >;
{ q.insert( x , p ) } -> std::same_as< typename Q::Handle >;
q.decrease( y , p );
};
} // end( namespace ADS )
/*--------------------------------------------------------------------------*/
#endif /* PriorityQueue.h included */
/*--------------------------------------------------------------------------*/
/*------------------------ End File PriorityQueue.h ------------------------*/
/*--------------------------------------------------------------------------*/