sort

JeongChaeJin·2021년 2월 22일
0

cpp_basic

목록 보기
4/6

std::sort()

  • quick sort 보다 빠르고, 배열 뿐만 아니라 벡터에서의 정렬도 지원한다.
  • #include < algorithm > 선언해야됨
  • sort 함수는 두가지 형태
    • 2가지 인자 받는 경우
      • 첫번째 인자 : 데이터의 반복자
      • 두번째 인자 : vector.end() 했을 때 반환되는 마지막 반복자
      • 기본으로 오름차순 정렬
    • 3가지 인자 받는 경우
      • 첫번째, 두번째는 위와동일
      • 세번째 인자 : 다른 기준으로 정렬해야할 때 전달하는 함수객체
#include <iostream>
#inlcude <vector>
#inlcude <algorithm>

using namespace std;

int main()
{
	int num[] = {2, 4, 1, 5, 3};
    
    sort(num, num+5); // 두번째 인자 전까지만 sort 하므로 n+4까지 정렬이 되는 것이다.
    
    sort(num, num+5, greater<int>()); // greater 라는 함수객체 내림차순
    
   vector<string> fruits {"orange", "banana", "apple", "pear", "lemon"};
   
   sort(fruits.begin(), fruits.end());
   
   for (auto s : fruits)
   	cout << s << endl;
}
  • vector 와 array 의 정렬 방법이 조금 달라서 헷갈린다.
  • begin(), end() 를 사용하면된다.
    • sort(std::begin(num), std::end(num))
    • 근데 통상적으로 위 코드처럼사용함.
  • class 를 원소로 갖는 vector는 원소 class 가 > operator 가 정의되어있어야됨.
  • sort 자체를 이욯애서 정렬 기준을 바꿀 수 있다.
bool cmp_age_desc(const Person& a, const Person& b)
{
	return a.age > b.age; // a,b 순서인경우 < : 오름차순, > : 내림차순
}

bool cmp_name_desc(const Persn& a, const Person& b)
{
	return a.name < b.name; // 이름기준 오름차순
}

int main()
{
	...
	sort(students.begin(), students.end(), cmp_age_desc);
}
profile
OnePunchLotto

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN