sort
sort はランダムアクセスイテレータを二つ受け取り、 その範囲の要素を並べ替えます。
並べ替える際には、オプションで比較関数を渡すことができます。
sort のサンプルコード
以下の例では一つ目の sort では型の既定の比較で並べ替えを行い、 二つ目の sort ではラムダ式で比較方法を与えています。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> v;
v.push_back(3);
v.push_back(1);
v.push_back(-5);
// Simple Sort
sort(v.begin(), v.end());
for (auto i = v.begin(); i != v.end(); i++) {
cout << ' ' << *i;
}
cout << endl;
// Custom Sort
sort(v.begin(), v.end(), [](int i, int j) -> bool {
return abs(i) < abs(j);
});
for (auto i = v.begin(); i != v.end(); i++) {
cout << ' ' << *i;
}
cout << endl;
}
実行結果は次の通りです。ラムダ式は C++11 で導入されたのでコンパイルオプションを指定します。
g++ -std=c++11 foo.cpp
./a.out
-5 1 3
1 3 -5
二個目の sort は abs で絶対値による比較になっています。