The function next_permutation is used to sort in an ascending order based upon lexicographical criteria.
template<class BidirectionalIterator> bool next_permutation (BidirectionalIterator first, BidirectionalIterator last); template<class BidirectionalIterator, class Compare> bool next_permutation (BidirectionalIterator first, BidirectionalIterator last, Compare comp);
Returns true if all elements have been sorted.