상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - C++에서 std::sort의 사용법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
`std::sort`는 C++ <a href='https://sangseek.com/sangseeks/표/ko'>표</a>준 라이브러리에서 제공하는 <a href='https://sangseek.com/sangseeks/정렬 알고리즘/ko'>정렬 알고리즘</a>으로, 주어진 범위의 요소들을 정렬하는 데 사용됩니다. 이 함수는 `<algorithm>` 헤더 파일에 정의되어 있으며, 다양한 데이터 타입과 사용자 정의 타입에 대해 정렬을 수행할 수 있습니다. `std::sort`는 일반적으로 퀵소트(Quick Sort) 알고리즘을 기반으로 하며, 평균적으로 O(n log n)의 시간 복잡도를 가집니다. 기본 사용법 `std::sort`의 기본 사용법은 다음과 같습니다: ```cpp include <iostream> include <vector> include <algorithm> int main() { <a href='https://sangseek.com/sangseeks/std::vector/ko'>std::vector</a><int> vec = {5, 2, 9, 1, 5, 6}; // 기본 정렬 (<a href='https://sangseek.com/sangseeks/오름차순/ko'>오름차순</a>) std::sort(vec.begin(), vec.end()); // 정렬된 결과 출력 for (int num : vec) { std::cout << num << " "; } std::cout << std::endl; return 0; } ``` 위의 예제에서 `std::sort`는 `vec` 벡터의 시작(iterate)과 끝(iterate) 위치를 인자로 받아, 해당 범위의 요소들을 오름차순으로 정렬합니다. 사용자 정의 정렬 기준 `std::sort`는 기본적으로 `<` 연산자를 사용하여 정렬하지만, 사용자 정의 정렬 기준을 제공할 수도 있습니다. 이를 위해 비교 함수를 정의하거나 람다 표현식을 사용할 수 있습니다. 비교 함수 예제 ```cpp include <iostream> include <vector> include <algorithm> bool customCompare(int a, int b) { return a > b; // 내림차순 정렬 } int main() { std::vector<int> vec = {5, 2, 9, 1, 5, 6}; // 사용자 정의 비교 함수를 사용한 정렬 std::sort(vec.begin(), vec.end(), customCompare); // 정렬된 결과 출력 for (int num : vec) { std::cout << num << " "; } std::cout << std::endl; return 0; } ``` 람다 표현식 예제 ```cpp include <iostream> include <vector> include <algorithm> int main() { std::vector<int> vec = {5, 2, 9, 1, 5, 6}; // 람다 표현식을 사용한 내림차순 정렬 std::sort(vec.begin(), vec.end(), [](int a, int b) { return a > b; // 내림차순 정렬 }); // 정렬된 결과 출력 for (int num : vec) { std::cout << num << " "; } std::cout << std::endl; return 0; } ``` 사용자 정의 타입 정렬 사용자 정의 타입에 대해서도 `std::sort`를 사용할 수 있습니다. 이 경우, 해당 타입의 멤버 변수를 기준으로 정렬할 수 있는 비교 함수를 정의해야 합니다. ```cpp include <iostream> include <vector> include <algorithm> struct Person { <a href='https://sangseek.com/sangseeks/std::string/ko'>std::string</a> name; int age; // 생성자 Person(std::string n, int a) : name(n), age(a) {} }; bool compareByAge(const Person &a, const Person &b) { return a.age < b.age; // 나이 기준 오름차순 정렬 } int main() { std::vector<Person> people = { Person("Alice", 30), Person("Bob", 25), Person("Charlie", 35) }; // 나이 기준으로 정렬 std::sort(people.begin(), people.end(), compareByAge); // 정렬된 결과 출력 for (const auto &person : people) { std::cout << person.name << " (" << person.age << ")" << std::endl; } return 0; } ``` 주의사항 1. 정렬 가능한 타입 : `std::sort`를 사용하려면 정렬할 타입이 `<` 연산자를 지원해야 합니다. 사용자 정의 타입의 경우, <a href='https://sangseek.com/sangseeks/비교 연산자/ko'>비교 연산자</a>를 오버로딩해야 합니다. 2. 정렬 안정성 : `std::sort`는 정렬 안정성이 보장되지 않습니다. 즉, 동일한 키를 가진 요소의 상대적인 순서는 보장되지 않습니다. 정렬 안정성이 필요한 경우 `std::stable_sort`를 사용할 수 있습니다. 3. 범위 : `std::sort`는 두 개의 <a href='https://sangseek.com/sangseeks/반복자/ko'>반복자</a>(시작과 끝)를 인자로 받습니다. 이 범위는 정렬할 요소의 범위를 정의합니다. 시작 반복자는 포함되지만 끝 반복자는 포함되지 않습니다. 4. 복잡도 : <a href='https://sangseek.com/sangseeks/최악/ko'>최악</a>의 경우 O(n^2)의 시간 복잡도를 가질 수 있지만, 평균적으로 O(n log n)입니다. 따라서 대규모 데이터에 대해서는 성능이 좋습니다. 이와 같이 `std::sort`는 C++에서 매우 유용한 정렬 함수로, 다양한 데이터 타입과 정렬 기준을 지원하여 유연하게 사용할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기