Можем ли мы переопределить функции контейнеров C ++ STL? - PullRequest
0 голосов
/ 14 апреля 2020

В качестве примера я хочу использовать Min Heap , используя priority_queue , и вместо удаления наименьшего элемента я хочу переопределить pop () функция для удаления определенного элемента из Min Heap каждый раз.

1 Ответ

1 голос
/ 15 апреля 2020

Нет.

std::priority_queue::pop не является виртуальной функцией, поэтому даже если вы сделали ее подклассом и напишите новую, она не будет вызываться из std::priority_queue & или std::priority_queue *.

Если вам нужна максимальная куча, вы можете изменить один из параметров std::priority_queue по умолчанию с std::less на std::greater, например

template <typename T>
using max_heap = std::priority_queue<T, std::vector<T>, std::greater<T>>;
...