void processWithBest(List<Event> events) {
PriorityQueue<State> heap = new PriorityQueue<>(this::betterFirst);
for (Event event : events) {
addCandidates(heap, event);
while (!heap.isEmpty() && stale(heap.peek(), event)) heap.remove();
useBest(heap.peek(), event);
}
}
def process_with_best(events) -> None:
heap = []
for event in events:
add_candidates(heap, event)
while heap and stale(heap[0], event):
heappop(heap)
use_best(heap[0], event)
def processWithBest(events: Iterable[Event]): Unit =
val heap = scala.collection.mutable.PriorityQueue[State]()(betterFirst)
for event <- events do
addCandidates(heap, event)
while heap.nonEmpty && stale(heap.head, event) do heap.dequeue()
useBest(heap.head, event)
void processWithBest(const std::vector<Event>& events) {
std::priority_queue<State, std::vector<State>, BetterFirst> heap;
for (const Event& event : events) {
addCandidates(heap, event);
while (!heap.empty() && stale(heap.top(), event)) heap.pop();
useBest(heap.top(), event);
}
}