Witam, potrzebuję kontenera który:
- (1) będzie trzymał elementy posortowane
- (2) czas dodawania elementów max: log(n)
- (3) możliwe duplikaty elementów
- (4) czas wyszukiwania elementu o zadanej pozycji: max: log(n)
- (5) możliwość określenia globalnej pozycji iteratora (chodzi o określenie ile elementów większych/mniejszych) znajduje się na prawo/lewo od iteratora w czasie max log(n)
// maksymalna ilość elementów w kontenerze jest znana
(1),(2),(3),(4) spełnia według mnie tylko multiset, ale za to nie spełnia on (5) bo std::distance dla niego działa w czasie stałym. Chyba że da się jakoś dodawać elementy do vectora tak żeby od razu były posrtowane.
I teraz moje pytanie:
Czy da się określić pozycję iteratora do multisetu w czasie max log(n) lub czy istnieje jakaś funkcja która dodaje elementy do vectora w taki sposób, aby nadal były posorotwane lub inne rozwiązanie do mojego problemu?
EDIT:
z ogólniejszym problemem sobie poradziłem w inny sposób, jednak pytanie nadal jest aktualne (ciekawość)