C++에서 std::sort의 사용법은?
A1: std::sort는 C++ 표준 라이브러리
Q2: std::sort를 사용하기 위해 필요한 헤더 파일은 무엇인가요?
A2: ` include
Q3: std::sort 함수의 기본 문법은 어떻게 되나요?
A3:
```cpp
std::sort(RandomIt first, RandomIt last);
```
`first`는 정렬 시작 위치의 반복자, `last`는 정렬 종료 위치의 반복자(끝 다음)입니다.
Q4: 사용자 정의 정렬 기준으로 정렬하려면 어떻게 해야 하나요?
A4: 세 번째 인자로 비교 함수나 함수 객체를 전달합니다. 예:
```cpp
std::sort(v.begin(), v.end(), [](int a, int b) { return a > b; }); // 내림차순 정렬
```
Q5: std::sort는 어떤 반복자를 요구하나요?
A5: 최소한 Random Access Iterator(난수 접근 반복자)를 요구합니다. 예: Raw 배열, std::vector, std::deque 등이 가능합니다. std::list는 사용할 수 없습니다.
Q6: std::sort를 배열에 사용하는 방법은?
A6: 배열 포인터를 시작과 끝 위치로 지정합니다. 예:
```cpp
int arr[] = {3,1,4,1,5};
std::sort(arr, arr + 5);
```
Q7: std::sort의 시간 복잡도는 어떻게 되나요?
A7: 평균적으로 O(N log N)입니다. 내부적으로 Introsort 알고리즘을 사용합니다.
Q8: std::sort는 안정 정렬(stable sort)인가요?
A8: 아니요. std::sort는 안정 정렬을 보장하지 않습니다. 안정성을 원하면 std::stable_sort를 사용하세요.
Q9: 내림차순으로 정렬하고 싶으면 어떻게 해야 하나요?
A9: 비교 함수를 `return a > b;` 등으로 반대로 정의하거나, `
std::sort(v.begin(), v.end(), std::greater
```
Q10: 복잡한 데이터 구조의 멤버 기준으로 정렬하려면?
A10: 멤버끼리 비교하는 람다나 함수 객체를 사용합니다. 예:
```cpp
struct Person { std::string name; int age; };
std::vector
// 나이 기준 오름차순 정렬
std::sort(persons.begin(), persons.end(), [](const Person& a, const Person& b) {
return a.age < b.age;
});
```
Q11: 정렬 후 원본 컨테이너가 변경되나요?
A11: 예, std::sort는 직접 컨테이너 내 요소들을 재배치하며 원본을 변경합니다.
Q12: const 객체를 std::sort에 사용할 수 있나요?
A12: 불가능합니다. 정렬 시 원소들을 교환하기 때문에 요소들이 변경 가능(mutable)해야 합니다.
Q13: 범위가 빈 컨테이너일 때 std::sort는 어떻게 동작하나요?
A13: 아무 동작도 하지 않고 안전하게 종료됩니다.
Q14: std::sort에 문자열 배열을 정렬하려면?
A14: 문자열은 기본적으로 사전 순으로 정렬됩니다. 예:
```cpp
std::string arr[] = {"pear", "apple", "orange"};
std::sort(arr, arr + 3);
```
Q15: 정렬에 실패하거나 예외를 던지나요?
A15: 컴퍼레이터 및 복사/이동 생성자가 예외를 던지지 않는 한 std::sort 자체는 예외를 내지 않습니다. (단, 컴퍼레이터 내부에서 예외 발생 가능)
---
이상으로 std::sort의 주요 사용법과 자주 묻는 질문을 정리했습니다.
작성자:
박하린 [비회원]
| 작성일자: 1년 전
2024-09-20 17:11:39
조회수: 289 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 289 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.