ranges::adjacent_find
ranges::adjacent_find (인접 조건 쌍 찾기)
범위에서 서로 이웃하면서 특정 조건을 만족하는 첫 번째 쌍을 찾는 ranges 버전 알고리즘이에요. <algorithm> 헤더에 있어요.
출처: cppreference
본문
std::ranges::adjacent_find는 범위 안에서 인접한 두 요소가 조건을 만족하는 첫 지점을 찾아요. 반복자 쌍 대신 범위 객체를 받아요.
namespace std::ranges {
template< std::forward_iterator I, std::sentinel_for<I> S,
class Proj = std::identity, std::indirect_binary_predicate<...> Pred = ranges::equal_to >
constexpr I adjacent_find( I first, S last, Pred pred = {}, Proj proj = {} );
}
- 기본 술어는
ranges::equal_to라서, 인접한 두 같은 원소의 첫 위치를 찾아요. proj로 요소를 투영(proj)해 비교할 수도 있어요.
std::vector<int> v{1, 3, 3, 4, 5, 5};
auto it = std::ranges::adjacent_find(v);
// 첫 3(두 번째 3)을 가리킴
- 반환 값: 조건을 만족하는 첫 쌍의 첫 원소 반복자. 없으면
last.
반복자 버전 std::adjacent_find를 범위 중심으로 다시 만든 것이에요. 제약으로 컴파일 타임 검사가 더 엄격해요.