[C++] STL - sort() 함수 (정렬)

gogori6565·2022년 7월 19일
0

STL (Standard Template Library)

: 표준 템플릿 라이브러리의 약자로써, C++에서 프로그래밍에 필요한 자료구조와 알고리즘을 Template의 형태로 제공하는 C++ 라이브러리

STL 구성

  1. 컨테이너(Container) : 템플릿 클래스
  • 데이터를 담아두는 자료 구조를 표현한 클래스
  • 리스트, 큐, 스택, 맵, 셋, 벡터
  1. 반복자(Iterator) : 컨테이너 원소에 대한 포인터
  • 컨테이너의 원소들을 순회하면서 접근하기 위해 만들어진 컨테이너 원소에 대한 포인터
  1. 알고리즘(Algorithm) : 템플릿 함수
  • 컨테이너 원소에 대한 복사, 검색, 삭제, 정렬 등의 기능을 구현한 템플릿 함수
  • 컨테이너의 멤버 함수 아님
  1. 함수자(Fuctor) : 함수처럼 동작하는 객체. 컨테이너와 알고리즘에서 정렬 기준을 정의해준다던지와 같은 조건을 설정해주는 용도로 사용됨.

  2. 할당기(Allocator) : 컨테이너의 메모리 할당 정책을 캡슐화한 객체. 모든 컨테이너는 자신의 할당기를 가짐.


sort() 함수

: C++ algorithm 헤더에 포함되어 있고 기본적으로 오름차순으로 정렬을 수행

  • sort()함수를 사용하기 위해서는 algorithm 을 include 해야함
#include<algorithm>

sort(start, end)

  • [start, end) 범위의 인자를 오름차순(default)으로 정렬 (start를 포함, end를 포함하지 않는 구간)
    ex) 0~10번째 인덱스까지 정렬할 경우, sort(arr, arr+10); -> arr+9가 아니라 arr+10을 넣어야 함!

사용법

  • sort(arr, arr+n)
  • sort(v.begin(), v.end()) //벡터
  • sort(v.begin(), v.end(), compare) //사용자 정의 함수 사용
  • sort(v.begin(), v.end(), greater<자료형>()) //내림차순
  • sort(v.begin(), v.end(), less<자료형>()) //오름차순 (명시적지정)

compare (사용자 정의 함수)

  • 함수의 이름은 compare가 아니어도 상관 X
  • 단, 인자로는 compare() 가 아니라 compare 을 넣기

[내림차순으로 정렬하는 방법]

#include<algorithm>

//int a, int b 이므로 int 정렬 값을 내림차순으로 만듦
bool compare(int a, int b){
	return a > b;
}

int main(void){
	int arr[100];
    sort(arr, arr+10, compare);
}
profile
p(´∇`)q

0개의 댓글