(C++17) | ||||
| Sequence | ||||
(C++11) | ||||
(C++26) | ||||
(C++26) | ||||
(C++11) | ||||
| Associative | ||||
| Unordered associative | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
| Adaptors | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
| Views | ||||
(C++20) | ||||
(C++23) | ||||
| Tables | ||||
| Iterator invalidation | ||||
| Member function table | ||||
| Non-member function table |
| Member functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Non-member functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Deduction guides(C++17) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
void sort(); | (1) | (constexpr since C++26) |
template<class Compare> void sort( Compare comp); | (2) | (constexpr since C++26) |
Sorts the elements and preserves the order of equivalent elements. If an exception is thrown, the order of elements in*this is unspecified.
No references or iterators become invalidated.
Contents |
| comp | - | comparison function object (i.e. an object that satisfies the requirements ofCompare) which returns true if the first argument isless than (i.e. is orderedbefore) the second. The signature of the comparison function should be equivalent to the following: bool cmp(const Type1& a,const Type2& b); While the signature does not need to haveconst&, the function must not modify the objects passed to it and must be able to accept all values of type (possibly const) |
| Type requirements | ||
-Compare must meet the requirements ofCompare. | ||
Given\(\scriptsize N\)N assize():
std::sort requires random access iterators and so cannot be used withlist. This function also differs fromstd::sort in that it does not require the element type of thelist to be swappable, preserves the values of all iterators, and performs a stable sort.
#include <functional>#include <iostream>#include <list> std::ostream& operator<<(std::ostream& ostr,conststd::list<int>& list){for(constint i: list) ostr<<' '<< i;return ostr;} int main(){std::list<int> list{8,7,5,9,0,1,3,2,6,4};std::cout<<"initially: "<< list<<'\n'; list.sort();std::cout<<"ascending: "<< list<<'\n'; list.sort(std::greater<int>());std::cout<<"descending:"<< list<<'\n';}
Output:
initially: 8 7 5 9 0 1 3 2 6 4ascending: 0 1 2 3 4 5 6 7 8 9descending: 9 8 7 6 5 4 3 2 1 0
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 1207 | C++98 | it was unclear whether iterators and/or references will be invalidated | keep valid |
| reverses the order of the elements (public member function)[edit] |