해결된 질문
작성
·
228
·
수정됨
답변 1
1
안녕하세요 대기업님 ㅎㅎ
궁금한게 첨부한 사진처럼 20 20 비교하면 중복되니까 뒤에 20이 날라가면서 앞에 남아있는 20과 다음 숫자 40을 비교하는 거죠 ??
>> 이게 맞는 설명입니다.
더 정확히 말씀 드리면요.
10 20 20 20 20 30 이렇게 있을 때
1번째 20 에서 쭉 다음 2번째 20 3번째 20 이렇게 넘기면서 쭉 가다가.
30이 나왔을 때
10 20 30 이렇게 만들어버리고 30에 해당하는 이터레이터를 반환하게 되는 것입니다.
unique의 내부코드는 다음과 같습니다.
template <class ForwardIterator>
ForwardIterator unique (ForwardIterator first, ForwardIterator last)
{
if (first==last) return last;
ForwardIterator result = first;
while (++first != last)
{
if (!(*result == *first)) // or: if (!pred(*result,*first)) for version (2)
*(++result)=*first;
}
return ++result;
}
unique를 진행할 범위에서 first를 증가시키면서 result를 통해 만약 같은 수가 아니라면 ++result한 인덱스에 해당 값을 설정한 식으로 진행됩니다.
감사합니다.
감사합니다 큰돌님 !!