This can replace the current_indices store, and means that each secondary iteration doesn't have to scan across the entire extent. Only should be filled if an oracle is provided and the next element is greater than the current element.
Probably will need another field to specify the last element at which the queue was updated. Might even have to use make_heap directly to allow us to clear the priority queue quickly when a reverse order is used.
This can replace the
current_indicesstore, and means that each secondary iteration doesn't have to scan across the entire extent. Only should be filled if an oracle is provided and the next element is greater than the current element.Probably will need another field to specify the last element at which the queue was updated. Might even have to use
make_heapdirectly to allow us to clear the priority queue quickly when a reverse order is used.