Нужно написать метод который будет удалять из очереди елемент с наивысшим приоритетом. Я придумал кое какую проверку на то какой елемент имеет наивысший приоритет но как именно удалить его я не знаю. Может есть какая-либо функция типа
delete
или какой-то алгоритм(кроме переписывания всех елементов за исключением того который нужно удалить)? Вот код который имеется:
template<typename Val, typename Priority>
inline void PriQueue<Val, Priority>::extract() {
size_t biggestindex = 0;
size_t highestpriority = 0;
for (size_t i = 0; i < size ; i++)
{
if (queue[i].second < highestpriority)
{
biggestindex = i;
highestpriority = queue[i].second;
}
}
}
А вот код класса:
template<typename Val, typename Priority>
class PriQueue
{
private:
size_t size = 0;
size_t capacity;
size_t step;
pair<Val, Priority>* queue;
public:
PriQueue(size_t capacity = 10, size_t step = 5);
void add(const pair<Val, Priority>& p);
void print() const;
void extract();
};
Буду благодарен за любую помощь.