std::bidirectional_iterator
std::bidirectional_iterator (양방향 반복자 컨셉)
forward_iterator를 정제해 반복자를 뒤로 이동할 수 있는 능력을 추가하는 컨셉이에요. C++20부터 있어요.
출처: cppreference
본문
<iterator> 헤더에 정의돼 있어요.
template< class I >
concept bidirectional_iterator =
std::forward_iterator<I> &&
std::derived_from</*ITER_CONCEPT*/<I>, std::bidirectional_iterator_tag> &&
requires(I i) {
{ --i } -> std::same_as<I&>;
{ i-- } -> std::same_as<I>;
};
bidirectional_iterator 컨셉은 forward_iterator를 정제해 반복자를 뒤로 이동할 수 있는 능력을 추가해요.
반복자 컨셉 결정
/*ITER_CONCEPT*/<I>는 ITER_TRAITS<I>::iterator_concept이 유효하면 그 타입을, 아니면 iterator_category가 유효하면 그 타입을, 아니면 iterator_tag_t<iter_traits_t<I>>를 나타내요.
의미 요구사항
--i와 i--의 의미가 반복자를 앞으로 한 번 이동하는 것의 역임을 요구해요.
--i는i를 감소시키고 그 결과를 참조로 돌려줘요.i--는 감소 전의 값을 돌려줘요.