std::list<T,Allocator>:: sort
|
void
sort
(
)
;
|
(1) | (constexpr since C++26) |
|
template
<
class
Compare
>
void sort ( Compare comp ) ; |
(2) | (constexpr since C++26) |
要素をソートし、同等な要素の順序を保持します。例外がスローされた場合、 * this 内の要素の順序は未指定となります。
参照やイテレータは無効化されません。
目次 |
パラメータ
| comp | - |
比較関数オブジェクト(つまり、
Compare
の要件を満たすオブジェクト)で、最初の引数が2番目の引数より
小さい
(つまり、
前に順序付けられる
)場合に
true
を返すもの。
比較関数のシグネチャは以下と同等であるべきです: bool cmp ( const Type1 & a, const Type2 & b ) ;
シグネチャが
const
&
を持つ必要はありませんが、関数は渡されたオブジェクトを変更してはならず、
値カテゴリ
に関係なく型(おそらくconst)
|
| 型要件 | ||
-
Compare
は
Compare
の要件を満たさなければなりません。
|
||
計算量
与えられた N を size() として:
注記
std::sort
はランダムアクセスイテレータを必要とするため、
list
では使用できません。この関数はまた、
std::sort
とは異なり、
list
の要素型が交換可能である必要がなく、すべてのイテレータの値を保持し、安定ソートを実行します。
例
#include <functional> #include <iostream> #include <list> std::ostream& operator<<(std::ostream& ostr, const std::list<int>& list) { for (const int 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'; }
出力:
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
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 1207 | C++98 | イテレータおよび/または参照が無効化されるかどうかが不明確であった | 有効を維持 |
関連項目
|
要素の順序を反転する
(公開メンバ関数) |