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 で絶対値による比較になっています。