Graphisoft®

GSRootVersion: 1.0

CopyIf

요소들의 소스 시퀀스를 통해 반복하여 순방향으로 새 위치를 할당하면서 지정한 조건을 만족하는 소스 범위의 요소들의 값들을 목적지 범위에 할당합니다.

template <class In, class Out, class Pred>
Out CopyIf (
    In                  first,
    In                  last,
    Out                 result,
    Pred                pred
);

Template 파라미터

In
입력 반복자입니다.
Out
출력 반복자입니다.
Pred
단항 술어(Unary predicate)입니다.

파라미터

first
소스 범위의 1번째 요소의 위치를 설명하는 입력 반복자입니다.
last
소스 범위의 마지막 직전 요소의 위치를 설명하는 입력 반복자입니다.
result
목적지 범위에서 1번째 요소의 위치를 설명하는 출력 반복자입니다.
pred
만약 요소를 셀 경우 충족되는 조건을 정의하는 사용자 정의 술어(predicate) 함수 객체입니다. 술어는 1개의 인자를 가지며 true 또는 false를 리턴합니다.

리턴 값

목적지 범위의 마지막 직전 요소의 위치를 설명하는 출력 반복자입니다. 즉, 반복자는 다음을 의미합니다: result + (last - first)

설명

소스 범위는 반드시 유효해야 하며, 목적지는 복사되는 모든 요소들을 저장할 수 있는 충분한 공간이 있어야 합니다.

이 알고리즘은 소스 요소를 1번째 요소부터 순서대로 복사하기 때문에 소스 범위의 first 위치가 목적지 범위에 포함되지 않는 경우 목적지 범위가 소스 범위와 겹칠 수 있습니다. CopyIf는 소스 범위와 목적지 범위 간에 겹치지 않는 이상 요소들을 오른쪽이 아닌 왼쪽으로 shift 시킬 수 있습니다. 위치들을 오른쪽으로 shift 하려면 CopyIfBackward 알고리즘을 사용하십시오.

CopyIf 알고리즘은 목적지 범위에 있는 요소들에게 새로운 값들을 할당하면서 반복자들이 가리키는 값들만 변경합니다. 새로운 요소들을 생성하는 데 사용할 수 없으며 빈 컨테이너에 요소들을 직접 삽입할 수 없습니다.

참고사항

알고리즘