Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::list<T,Allocator>::sort

      From cppreference.com
      <cpp‎ |container‎ |list

      [edit template]
       
       
       
      std::list
      Member functions
      Non-member functions
      (until C++20)(until C++20)(until C++20)(until C++20)(until C++20)
      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.

      1) Elements are compared usingoperator<.
      2) Elements are compared usingcomp.

      No references or iterators become invalidated.

      Contents

      [edit]Parameters

      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)Type1 andType2 regardless ofvalue category (thus,Type1& is not allowed, nor isType1 unless forType1 a move is equivalent to a copy(since C++11)).
      The typesType1 andType2 must be such that an object of typelist<T,Allocator>::const_iterator can be dereferenced and then implicitly converted to both of them.​

      Type requirements
      -
      Compare must meet the requirements ofCompare.

      [edit]Complexity

      Given\(\scriptsize N\)N assize():

      1) Approximately\(\scriptsize N \cdot log(N)\)N·log(N) comparisons usingoperator<.
      2) Approximately\(\scriptsize N \cdot log(N)\)N·log(N) applications of the comparison functioncomp.

      [edit]Notes

      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.

      [edit]Example

      Run this code
      #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

      Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 1207C++98it was unclear whether iterators and/or references will be invalidatedkeep valid

      [edit]See also

      reverses the order of the elements
      (public member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/container/list/sort&oldid=135245"

      [8]ページ先頭

      ©2009-2025 Movatter.jp