😒 저 저 저 개념없는 나/🤬 이런 C++

[C++] 헤더 <algorithm >

우주수첩 2022. 4. 19. 23:46
728x90

이전에 sorting 알고리즘 몇 가지를 직접 C++로 구현 해 보았는데 사실 다 부질없고 라이브러리 함수가 모두 존재한다.

하지만 기억 저 편 하드디스크에서 아직 디스패치 되지 않는 나의 데이터들을 적재하기위해 잠시 IO인터프리터가 되어 주었던 것으로 하겠다. 망할 운영체제. 

 

여튼 헤더에 <algorithm>을 include 하면 우리가 원하는 정렬을 사용할 수 있다.

 

#sort(a,b)

  • sort 함수를 사용하기 위해서는 정렬할 각 원소들이 비교가능해야한다.
  • 숫자는 크기순, 문자는 사전순, pair 나 tuple의 경우 처음 요소가 작은 순서대로 비교 연산자가 정의되어있다.

 

몇가지 예시를 들어주도록 하겠다.

 

# vector 정렬

#include <vector> // 헤더파일 언급 한 번 해 드리께

vector<int> v = {4,2,5,3,5,8,3};
sort(v.begin(),v.end());
  • begin, end는 포인터 같은 느낌으로 생각하면 될 듯 하다.
  • Vector V의 처음부터 끝까지 정렬한다는 의미이다.

 

 

 

# array 정렬

int n =7;
int a[] = {4,2,3,3,5,8,3};
sort(a,a+n);
  • array의 처음위치부터 끝까지 sorting을 진행한다.

 

 

 

# string정렬

#include <string> // 헤더파일 슥삭 써 드리께

string s = "monkey";
sort(s.begin(), s.end());
  • string의 경우 사전적 순서로 정렬된다.

 

# pair 정렬

#include <vector> // 헤더 스으을적 써주께에

vector<pair<int, int>> v;
v.push_back( (1,5));
v.push_back( (2,3));
v.push_back( (4,4));
v.push_back( (8,6));
v.push_back( (6,2));
sort(v.begin(), v.end());

 

 

비교 기준을 바꾸고 싶은 경우 bool compare 함수를 새로 정의하면 된다.

 

# 사용자 정의 구조체(클래스)

  • 비교 연산자가 없으므로 operator를  따로 정의해 주어야 한다.
728x90

'😒 저 저 저 개념없는 나 > 🤬 이런 C++' 카테고리의 다른 글

[c++] std::tie()  (0) 2022.06.05
[C++] pair 자료형  (0) 2022.04.16
[C++] auto 타입 추론  (0) 2022.04.16