adjacent_find 는 컨테이너의 순차열에서 현재 원소와 다음 원소가 같아지는 첫 원소의 반복자를 반환합니다.
iter = adjacent+find(v.begin(), v.end());
if (iter != v.end()) // 같은 원소가 없다면 구간의 끝 반복자 반환
순차열에서 인접한 우너소가 특정 조건에 따라 인접한지 찾고자 한다면 adjacent_find(b, e, f)버전을 사용합니다. f는 이항 조건자이며 현재 원소와 다음 원소를 가리키는 반복자 p와 p+1 에 대해 f(*p, *(p+1))가 참인 첫 원소의 반복자를 반환합니다.
조건자는 bool 형식을 반환하는 함수류 입니다.
인접해 있는 우너소의 차가 10보다 큰 첫 원소의 반복자를 반환하는 예제입니다.
bool Pred(int a, inb)
{
return abs(b - a) > 10;
}
순차열에서 원소의 개수를 구하려면 간단한게 count() 알고리즘을 사용합니다.
int n = count(v.begin(), v.end(), 30)
조건자 버전의 count_if 를 사용할 수 있습니다.
bool Pred(int n)
{
return 25 < n;
}
int n = count_if(v.begin(), v.end(), Pred);
equal() 알고리즘을 사용하여 두 순차열의 원소가 모두 같은(==)지 판단할 수 있습니다. equal(b, e, b2)는 구간 [b,e)의 순차열과 구간 [b2, b2 + (e - b))의 순차열이 같은지 판단하는 알고리즘입니다.
두 개의 순차열을 필요로하는 대부분의 알고리즘은 두 순차열의 길이(원소의 개수)가 같을때 동작하므로 첫 번쨰 순차열은 b, e 를 필요로하지만 두 번쨰 순차열은 시작 반복자인 b2만을 필요로 합니다.
if (equal(v1.begin(), v1.end(), v2.begin()))
조건에 따라 두 순차열이 같은지 비교하고자 한다면 equal(b, e, b2, f)버저을 사용합니다. f는 이항 조건자로 각 순차열의 반복자 p와 q에 대해 f(*p, *q)가 모두 참이면 equal() 알고리즘은 참을 반환합니다.
if (equal(v1.begin(), v1.end(), v2.begin(0, Pred))