C/C++ 入門

ホーム > STL の使い方 > sort

sort

sort はランダムアクセスイテレータを二つ受け取り、 その範囲の要素を並べ替えます。

並べ替える際には、オプションで比較関数を渡すことができます。

sort のサンプルコード

以下の例では一つ目の sort では型の既定の比較で並べ替えを行い、 二つ目の sort ではラムダ式で比較方法を与えています。

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main () {
	vector<int> v { 3, 1, -5, 12, -100 };

	sort(v.begin(), v.end());

	for(auto i=v.begin(); i!=v.end(); i++){
		cout << ' ' << *i;
	}
	cout << endl;

  	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
 -100 -5 1 3 12
 1 3 -5 12 -100

二個目の sort は abs で絶対値による比較になっています。

ホーム > STL の使い方 > sort