std::forward_list<T,Allocator>:: sort
|
void
sort
(
)
;
|
(1) |
(C++11以降)
(constexprはC++26以降) |
|
template
<
class
Compare
>
void sort ( Compare comp ) ; |
(2) |
(C++11以降)
(constexprはC++26以降) |
要素をソートし、同等な要素の順序を保持します。例外がスローされた場合、 * this 内の要素の順序は未指定となります。
参照やイテレータは無効化されません。
目次 |
パラメータ
| comp | - |
比較関数オブジェクト(つまり
Compare
の要件を満たすオブジェクト)。最初の引数が2番目の引数より
小さい
(つまり
前に順序付けられる
)場合に
true
を返す。
比較関数のシグネチャは以下と同等であるべき: bool cmp ( const Type1 & a, const Type2 & b ) ;
シグネチャが
const
&
を持つ必要はないが、関数は渡されたオブジェクトを変更してはならず、
値カテゴリ
に関係なく型(おそらくconstの)
|
| 型の要件 | ||
-
Compare
は
Compare
の要件を満たさなければならない。
|
||
計算量
与えられた N を std:: distance ( begin ( ) , end ( ) ) として:
注記
std::sort
はランダムアクセスイテレータを必要とするため、
forward_list
では使用できません。この関数はまた、
std::sort
とは異なり、
forward_list
の要素型が交換可能である必要がなく、すべてのイテレータの値を保持し、安定ソートを実行します。
例
#include <functional> #include <iostream> #include <forward_list> std::ostream& operator<<(std::ostream& ostr, const std::forward_list<int>& list) { for (const int 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 << "initially: " << list << '\n'; list.sort(); std::cout << "ascending: " << list << '\n'; list.sort(std::greater<int>()); std::cout << "descending:" << list << '\n'; }
出力:
initially: 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
関連項目
|
要素の順序を反転する
(公開メンバ関数) |