C++

[C++] STL std::sort(begin, end, compareFunction)

sweetnew 2020. 3. 7. 23:26
반응형

template <Type T> void sort (T begin, T end, bool compareFunction);

 

std::sort<algorithm> 헤더 파일을 포함하여 사용할 수 있으며,

주어진 구간내에 있는 배열 또는 벡터 인자들을 오름차순 정렬해준다.

 

첫 번째 인자인 begin은 '시작하는 주소',

두 번째 인자인 end에는 '끝나는 주소 + 1(비어있음)',

세 번째 인자인 compareFunction정렬할 방법을 정의해준다.

(첫·두 번째 인자로 지정하는 정렬 범위는, begin은 포함하고 end는 포함하지 않는 구간이다.)

 

 

#include <iostream>
#include <algorithm>	// sort()

using namespace std;

bool compareFunction(int &a, int &b){	// a는 b보다 앞쪽에 위치한 인자이다.
  return a > b;				// 참(a > b)이면, swap 되지 않는다.
  					// false이면 swap되어 a와 b 인자의 위치가 바뀐다.
}

int main(){

  int arr[10] = {4, 6, 5, 2, 8, 9, 1, 3, 7, 0};
  int size = sizeof(arr) / sizeof(arr[0]);

  cout << "Before: ";
  for(int i = 0; i < size; ++i){
    cout << arr[i] << " ";
  }
  std::cout << endl;

  sort(arr, arr + size, compareFunction);

  cout << "After : ";
  for(int i = 0; i < size; ++i){
    cout << arr[i] << " ";
  }
  cout << endl;

  return 0;
}

 

반응형