I\'m trying to convert my implementation of quicksort into a template that can be used with other containers besides a vector.
Originally I used indexes to find the
use:
http://www.cplusplus.com/reference/std/iterator/distance/
and
http://www.cplusplus.com/reference/std/iterator/advance/
std::distance can measure the distance between two iterators as efficiently as possible.
std::advance can increment an iterator as efficiently as possible.
I still wouldn't want to quicksort a linked list, though :)
To find middle iterator you should use:
first + (last - first) / 2
How about something like this?
bool isMovingFirst = true;
while(first != last) {
if(isMovingFirst) {
++first;
} else {
--last;
}
isMovingFirst = !isMovingFirst;
}