darkprince   3년 전


end_iter = unique(v.begin(), v.end());

여기서 왜 end_iter에 unique(v.begin(), v.end());를 대입하는지 모르겠습니다

for (iter = v.begin(); iter != end_iter; iter++)//이게 어떤것을 의미하는지 모르겠습니다

{

cout << *iter << endl;

}

3587jjh   3년 전

unique(v.begin(), v.end());를 하면 v에서 중복된 원소들을 다 v의 뒤에 몰아넣습니다. 그리고 iterator을 반환하는데 이 이후로는

중복된 원소들이 존재합니다. ex) vector<int> v = {1, 2, 2, 3, 3, 5} => {1, 2, 3, 5, 2, 3}

그래서 유일한 원소들만 보기 위해 end_iter 전까지만 순회하는걸로 보입니다.

보통은 아예 v.erase(end_iter, v.end())를 해줘서 뒤의 중복된 원소가 있는 부분을 아예 없애고 v의 전체를 순회합니다.

v.erase(unique(v.begin(), v.end()), v.end())로 합쳐쓸 수 있습니다.

darkprince   3년 전

@3587jjh 감사감사 합니다 

darkprince   3년 전

@3587jjh 덕분에 완벽히 이해 했습니다

댓글을 작성하려면 로그인해야 합니다.