모두의 코드
C++ 레퍼런스 - reverse 함수 (<algorithm>)

작성일 : 2019-07-02 이 글은 643 번 읽혔습니다.

아직 C++ 에 친숙하지 않다면 씹어먹는 C++ 은 어때요?

reverse

<algorithm> 에 정의됨

// C++ 20 이전 까지
template <class BidirIt>
void reverse(BidirIt first, BidirIt last);  // (1)

// C++ 20 이후 부터
template <class BidirIt>
constexpr void reverse(BidirIt first, BidirIt last);  // (2)

// C++ 17 부터 추가됨
template <class ExecutionPolicy, class BidirIt>
void reverse(ExecutionPolicy&& policy, BidirIt first, BidirIt last);  // (3)

first 부터 last 전 까지의 원소들의 순서를 역순으로 뒤집는다.

이는 마치 0 이상의 i < (last - first) / 2 에 대해 first + i 번째 원소와 last - i 번째 원소들 간 swap 을 한 것과 동일하다.

(3) 번째 버전의 경우 인자로 지정된 ExecutionPolicy 에 따라 수행한다.

인자들

리턴값

없음

구현 예시

template <class BidirIt>
void reverse(BidirIt first, BidirIt last) {
  while ((first != last) && (first != --last)) {
    std::iter_swap(first++, last);
  }
}

실행 예제

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>

int main() {
  std::vector<int> v{1, 2, 3};
  std::reverse(std::begin(v), std::end(v));
  for (auto e : v) std::cout << e;
  std::cout << '\n';

  int a[] = {4, 5, 6, 7};
  std::reverse(std::begin(a), std::end(a));
  for (auto e : a) std::cout << e;
}

실행 결과

321
7654

참고 자료

댓글이 3 개 있습니다!
프로필 사진 없음
강좌에 관련 없이 궁금한 내용은 여기를 사용해주세요