Przejdź do głównej zawartości

std::forward_list sort() method

// (1) Non const version only
void sort();

// (2) Non const version only
template< class Compare >
void sort( Compare comp );

Sorts the elements in ascending order.

The order of equal elements is preserved.

  • (1) Uses operator< to compare the elements.
  • (2) Uses the given comparison function comp.
uwaga

If an exception is thrown, the order of elements in *this is unspecified.

Parameters

  • comp - comparison function object which returns true if the first argument is less than the second.

    The signature of the predicate function should be equivalent to the following:

    bool cmp( const Type1& a, const Type2& b )

    While the signature does not need to have const&, the function must not modify the objects passed to it and must be able to accept all values of type (possibly const) Type1 and Type2 regardless of value category (thus, Type1& is not allowed , nor is Type1 unless for Type1 a move is equivalent to a copy (od C++11)).

    The types Type1 and Type2 must be such that an object of type forward_list<T, Allocator>::const_iterator can be dereferenced and then implicitly converted to both of them.

Return value

(none)

Complexity

Approximately N log N comparisons, where N is the number of elements in the list.

Exceptions

(none)

Notes

std::sort requires RandomAccessIterators and so cannot be used with forward_list.
This function also differs from std::sort in that it does not require the element type of the forward_list to be Swappable, preserves the values of all iterators, and performs a stable sort.

Example

Main.cpp
#include <iostream>
#include <functional>
#include <forward_list>

std::ostream& operator<<(std::ostream& ostr, const std::forward_list<int>& list)
{
for (auto &i : list) {
ostr << " " << i;
}
return ostr;
}

int main()
{
std::forward_list<int> list = { 8,7,5,9,0,1,3,2,6,4 };

std::cout << "before: " << list << "\n";
list.sort();
std::cout << "ascending: " << list << "\n";
list.sort(std::greater<int>());
std::cout << "descending: " << list << "\n";
}
Output
before:      8 7 5 9 0 1 3 2 6 4
ascending: 0 1 2 3 4 5 6 7 8 9
descending: 9 8 7 6 5 4 3 2 1 0
This article originates from this CppReference page. It was likely altered for improvements or editors' preference. Click "Edit this page" to see all changes made to this document.
Hover to see the original license.

std::forward_list sort() method

// (1) Non const version only
void sort();

// (2) Non const version only
template< class Compare >
void sort( Compare comp );

Sorts the elements in ascending order.

The order of equal elements is preserved.

  • (1) Uses operator< to compare the elements.
  • (2) Uses the given comparison function comp.
uwaga

If an exception is thrown, the order of elements in *this is unspecified.

Parameters

  • comp - comparison function object which returns true if the first argument is less than the second.

    The signature of the predicate function should be equivalent to the following:

    bool cmp( const Type1& a, const Type2& b )

    While the signature does not need to have const&, the function must not modify the objects passed to it and must be able to accept all values of type (possibly const) Type1 and Type2 regardless of value category (thus, Type1& is not allowed , nor is Type1 unless for Type1 a move is equivalent to a copy (od C++11)).

    The types Type1 and Type2 must be such that an object of type forward_list<T, Allocator>::const_iterator can be dereferenced and then implicitly converted to both of them.

Return value

(none)

Complexity

Approximately N log N comparisons, where N is the number of elements in the list.

Exceptions

(none)

Notes

std::sort requires RandomAccessIterators and so cannot be used with forward_list.
This function also differs from std::sort in that it does not require the element type of the forward_list to be Swappable, preserves the values of all iterators, and performs a stable sort.

Example

Main.cpp
#include <iostream>
#include <functional>
#include <forward_list>

std::ostream& operator<<(std::ostream& ostr, const std::forward_list<int>& list)
{
for (auto &i : list) {
ostr << " " << i;
}
return ostr;
}

int main()
{
std::forward_list<int> list = { 8,7,5,9,0,1,3,2,6,4 };

std::cout << "before: " << list << "\n";
list.sort();
std::cout << "ascending: " << list << "\n";
list.sort(std::greater<int>());
std::cout << "descending: " << list << "\n";
}
Output
before:      8 7 5 9 0 1 3 2 6 4
ascending: 0 1 2 3 4 5 6 7 8 9
descending: 9 8 7 6 5 4 3 2 1 0
This article originates from this CppReference page. It was likely altered for improvements or editors' preference. Click "Edit this page" to see all changes made to this document.
Hover to see the original license.