Мне нужна структура данных, которая может:
- Добавить одно значение
- Получить минимальное значение
- Обновить одно значение
Я могу добиться этого, используя std::multiset
, где операции выполняются как:
multiset::insert()
multiset::begin()
- сначала удалите элементиспользуя
multiset::erase()
, затем добавьте обновленный элемент, используя multiset::insert()
. Что мне не нравится в multiset
, так это то, что для обновления элемента требуется итератор.Было бы неплохо, если бы указателя было достаточно.
Интересно, будет ли лучше использовать std::priority_queue
, алгоритмы std heap или что-то еще для требуемых операций и как это сделать.Первые две операции просты для std::priority_queue
или алгоритмов кучи, но третья операция (обновление) является проблемой.Есть ли другие структуры, которые можно использовать?Каковы их преимущества в производительности по сравнению с multiset
?