sort 함수란?
sort 함수는 C++ 'algorithm' 헤더 파일에 있는 함수입니다. sort 함수는 정렬 기능을 가진 함수입니다. qsort라는 함수도 정렬 기능을 하지만 sort함수가 더 빠릅니다. 표준 라이브러리에 있는 만큼 강력하기 때문에 사용하는 게 좋다고 합니다.
함수의 원형입니다.
//default
template <class RandomAccessIterator>
void sort (RandomAccessIterator first, RandomAccessIterator last);
//custom
template <class RandomAccessIterator, class Compare>
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
쉽게 표현하면 다음과 같습니다.
void sort(첫번째주소, 마지막주소, 정렬형태)
정렬형태 매개변수는 있어도 되고 없어도 됩니다. 없으면 오름차순이 default입니다.
sort함수는 std 소속입니다. 무턱대고 쓰면 [Note] 'std::sort' 에러 메시지를 볼 수 있습니다. 네임스페이스를 선언하여 편하게 사용할 수 있도록 합니다.
#include <stdio.h>
#include <algorithm>
using namespace std;
int main(){
//무작위 배열
int arr[10] = {5, 6, 10, 4, 3, 8, 7, 1, 2, 9};
//arr[0] ~ arr[9]
sort(arr, arr+10);
//출력
for(int i=0;i<10;++i){
printf("%d ", arr[i]);
}
return 0;
}
결과값:
1 2 3 4 5 6 7 8 9 10
정렬 형태를 입력하지 않아 오름차순으로 정렬된 것을 확인할 수 있습니다.
이번엔 문자열을 내림차순으로 정렬해보겠습니다.
#include <stdio.h>
#include <algorithm>
#include <string>
#include <iostream>
using namespace std;
bool comp(string s1, string s2){
return s1 > s2; //string 사전 역순
}
int main(){
//문자열 배열
string sArr[5] = {"abc", "aa", "abcd", "aza", "bcda"};
//sArr[0] ~ sArr[4], 사전 역순으로 정렬
sort(sArr, sArr+5, comp);
//출력
for(int i=0;i<5;++i){
cout << sArr[i] << endl;
}
return 0;
}
결과값:
bcda
aza
abcd
abc
aa
어떤 식으로 정렬할 것인지 함수를 통해 정해줬습니다. 내림차순으로(사전 역순으로) 정렬하기 위해 comp함수를 만들었고 비교하기 위한 두 string을 매개변수로 받았습니다. string의 경우 비교 연산자가 적용되는 것도 알 수 있습니다.
'C++' 카테고리의 다른 글
[C++] 벡터(vector)와 메소드들(erase, insert) 그리고 binary search(lower_bound, upper_bound) (0) | 2020.01.22 |
---|---|
[C++] 스택 풀기(Stack unwinding) (0) | 2020.01.02 |
[C++] 예외 처리(try, throw, catch) (0) | 2020.01.01 |
[C++] 스마트 포인터 - shared_ptr과 unique_ptr (0) | 2019.12.31 |
[C++] 스마트 포인터 - auto_ptr (0) | 2019.12.31 |