본문 바로가기

C++

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

반응형

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;
}

 

반응형

'C++' 카테고리의 다른 글

[C++] struct tm {};  (0) 2020.03.29
[C++] localtime()  (0) 2020.03.25
[C++] STL std::pair()  (0) 2020.03.07
[C++] STL std::vector()  (0) 2020.03.07
[C++] STL  (0) 2020.03.07