Graphisoft®

GSRootVersion: 1.0

CopyIfBackward

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

template <class Bi1, class Bi2, class Pred>
Bi2 CopyIfBackward (
    Bi1                 first,
    Bi1                 last,
    Bi2                 result,
    Pred                pred
);

Template 파라미터

Bi1
양방향 반복자입니다.
Bi2
양방향 반복자입니다.
Pred
단항 술어(Unary predicate)입니다.

파라미터

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

리턴 값

목적지 범위의 마지막 직전 요소의 위치를 설명하는 출력 반복자입니다.

설명

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

CopyBackwardIf 알고리즘은 CopyIf 알고리즘보다 더 까다로운 요구사항들을 부과합니다. 입력 반복자와 출력 반복자 모두 양방향이어야 합니다.

CopyBackward 알고리즘은 목적지 범위의 끝을 가리키는 반복자를 사용하여 출력 범위를 지정하는 유일한 알고리즘입니다.

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

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

참고사항

알고리즘