C++에서 std::reverse의 사용법은?
A1: std::reverse는 C++ 표준 라이브러리 `
---
Q2: std::reverse의 기본 사용법은 어떻게 되나요?
A2: `std::reverse`는 두 개의 이터레이터(시작 이터레이터와 끝 이터레이터)를 인자로 받습니다.
```cpp
include
include
std::vector
std::reverse(v.begin(), v.end()); // v는 {5, 4, 3, 2, 1}이 됨
```
---
Q3: std::reverse의 함수 시그니처는 어떻게 되나요?
A3:
```cpp
template
void reverse(BidirectionalIterator first, BidirectionalIterator last);
```
- `first` : 역순으로 변경할 구간의 시작 이터레이터(포함).
- `last` : 역순으로 변경할 구간의 끝 이터레이터(포함하지 않음).
---
Q4: std::reverse가 작동하는 이터레이터 종류는?
A4: `BidirectionalIterator` 이상을 지원합니다. 즉, `std::vector`, `std::list`, `std::deque` 등 양방향 이동이 가능한 컨테이너에서 사용할 수 있지만, `std::forward_list` 같이 단방향 이터레이터만 지원하는 곳에서는 사용할 수 없습니다.
---
Q5: std::reverse는 원본 컨테이너를 변경하나요?
A5: 네, `std::reverse`는 인자로 주어진 범위 내에서 요소들의 위치를 직접 바꾸므로, 원본 컨테이너 혹은 배열의 순서가 변경됩니다.
---
Q6: 배열에서도 std::reverse를 사용할 수 있나요?
A6: 네, 포인터를 이터레이터처럼 사용할 수 있으므로 배열 범위에 대해 다음과 같이 사용할 수 있습니다:
```cpp
std::reverse(arr, arr + 4); // arr은 {4, 3, 2, 1}이 됨
```
---
Q7: std::reverse로 문자열을 뒤집을 수 있나요?
A7: 네, std::string의 이터레이터를 사용할 수 있으므로 가능합니다.
```cpp
std::string s = "hello";
std::reverse(s.begin(), s.end()); // s는 "olleh"
```
---
Q8: 일부 구간만 역순으로 바꾸려면 어떻게 하나요?
A8: 역순으로 바꾸려는 부분의 시작과 끝 이터레이터를 전달하면 됩니다.
```cpp
std::vector
std::reverse(v.begin() + 1, v.begin() + 4); // v는 {1, 4, 3, 2, 5}
```
---
Q9: std::reverse를 사용할 때 주의할 점은?
A9:
- `first`와 `last` 이터레이터는 같은 컨테이너의 범위여야 합니다.
- `last`는 실제 반전 범위에서 제외되는 끝 위치라는 것을 기억해야 합니다.
- 단방향 이터레이터에는 사용할 수 없습니다.
- `first`가 `last`보다 뒤에 있을 경우 동작이 정의되지 않습니다.
---
Q10: std::reverse와 비슷한 함수가 있나요?
A10:
- `std::reverse_copy` : 역순으로 복사해서 다른 컨테이너에 저장할 때 사용합니다.
- `std::rotate` : 컨테이너 내에서 구간을 다른 순서로 재배치할 때 사용합니다.
---
요약:
`std::reverse`는 `
- include
작성자:
김준혁 [비회원]
| 작성일자: 1년 전
2024-09-20 17:11:40
조회수: 225 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 225 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.