std:: prev
| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
헤더 파일에 정의됨
<iterator>
|
||
|
template
<
class
BidirIt
>
BidirIt prev ( BidirIt it, typename std:: iterator_traits < BidirIt > :: difference_type n = 1 ) ; |
(C++11부터)
(C++17까지) |
|
|
template
<
class
BidirIt
>
constexpr
|
(C++17부터) | |
이터레이터 it 의 n 번째 선행자(또는 - n 번째 후행자, 만약 n 이 음수인 경우)를 반환합니다.
목차 |
매개변수
| it | - | 반복자 |
| n | - | 요소 개수 it 가 내려가야 하는 횟수 |
| 타입 요구사항 | ||
-
BidirIt
는
LegacyBidirectionalIterator
의 요구사항을 충족해야 함.
|
||
반환값
BidirIt
타입의 반복자로, 반복자
it
의
n
번째
선행자(또는
-
n
번째
후행자, 만약
n
이 음수인 경우)를 가리킵니다.
복잡도
선형.
그러나
BidirIt
가 추가적으로
LegacyRandomAccessIterator
요구사항을 충족하는 경우, 복잡도는 상수입니다.
가능한 구현
template<class BidirIt> constexpr // C++17부터 BidirIt prev(BidirIt it, typename std::iterator_traits<BidirIt>::difference_type n = 1) { std::advance(it, -n); return it; } |
참고 사항
표현식 -- c. end ( ) 이 컴파일되는 경우가 많지만, 이것이 보장되지는 않습니다: c. end ( ) 는 rvalue 표현식이며, rvalue의 감소 연산이 동작함을 보장하도록 명시하는 반복자 요구 사항이 존재하지 않습니다. 특히 반복자가 포인터로 구현되거나 operator -- 가 lvalue-ref-qualified로 구현된 경우, -- c. end ( ) 는 컴파일되지 않는 반면, std :: prev ( c. end ( ) ) 는 컴파일됩니다.
예제
#include <iostream> #include <iterator> #include <vector> int main() { std::vector<int> v{3, 1, 4}; auto it = v.end(); auto pv = std::prev(it, 2); std::cout << *pv << '\n'; it = v.begin(); pv = std::prev(it, -2); std::cout << *pv << '\n'; }
출력:
1 4
참고 항목
|
(C++11)
|
반복자를 증가시킴
(함수 템플릿) |
|
주어진 거리만큼 반복자를 전진시킴
(함수 템플릿) |
|
|
두 반복자 사이의 거리를 반환함
(함수 템플릿) |
|
|
(C++20)
|
주어진 거리만큼 또는 경계까지 반복자를 감소시킴
(알고리즘 함수 객체) |