unique() 함수 과정 질문있습니다
안녕하십니까 큰돌님
vector<int> s {10, 30, 20, 20, 40, 40, 40, 50, 10, 20, 30};
unique(s.begin(), s.end());
하면 결과가 10 30 20 40 50 10 20 30 10 20 30
이렇게 나오는데
궁금한게 첨부한 사진처럼 20 20 비교하면 중복되니까 뒤에 20이 날라가면서 앞에 남아있는 20과 다음 숫자 40을 비교하는 거죠 ??
아니면 설명이 날라간다는 표현인 거고 20 20 40 있을 때 20 (20 40) 이렇게 비교되는 건가요 ??
답변 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한 인덱스에 해당 값을 설정한 식으로 진행됩니다.
감사합니다.
채점서버 연결 관련 질문입니다
0
20
1
삼성 s직군
0
19
0
삼성 코테 없어짐
0
72
1
코딩살구클럽 가입부탁드립니다
0
39
2
코딩살구클럽 가입 요청 확인부탁드립니다
0
34
2
5-S 테스트 케이스 질문
0
37
2
코살 문제풀이 환경
0
53
2
2 - T 오큰수 문제가 있는 것 같습니다.
0
45
1
추천 추가문제들
0
44
2
프로그래머스 코테 환경 관련해서 질문드립니다.
0
50
2
해당 문제에 대한 채점이 코딩살구클럽에서 올바르게 처리되지 않습니다.
0
44
2
균형 이진 트리 설명 시 높이 숫자
0
33
2
4-H 질문드립니다.
0
37
2
1-K 질문드립니다.
0
43
2
대기업 인적성 시험 질문
0
43
2
4-C 질문드립니다
0
43
2
[수학숙제 / BOJ 2870] 채점 서버 오작동
0
40
1
코테 준비 질문
0
56
1
살구클럽가입 요청드려요
0
42
2
1-I 문제 질문
0
46
2
코딩살구클럽 가입
0
59
2
AI 코딩 도구 사용 시 학습 방법 조언
0
56
2
코딩살구클럽 오류
0
65
2
코살클 [3-F 괄호 추가하기] 프라이빗 9번 제보
0
51
1





