알고리즘/기타

[C++] Unique

키베이루 2023. 5. 9. 19:19

sort, unique, erase를 사용해서 중복을 제거할 수 있다.

unique : 인접한 중복된 요소가 있을 경우, 뒤에서 부터 제거 하고 나머지 요소의 첫번째 인덱스를 반환한다.

ex) { 1, 1, 2, 2, 3, 3 } ->  { 1, 2, 3, 2, 3, 3 }, index = 3 반환 (3부터 중복이 없기 때문)

int main() {
	vector<int> v{ 1,3,2,2,1,3 };
	sort(v.begin(), v.end()); // 인접한 요소에서 중복을 제거하기 때문에 정렬 해야함
	for (auto i : v)
	{
		cout << i << ' ';
	}
	cout << endl;
	auto temp = unique(v.begin(), v.end()); // temp에 중복이 아닌 인덱스를 저장

	v.erase(temp, v.end()); // 중복이 아닌 인덱스부터 끝까지 제거
	for (auto i : v)
	{
		cout << i << ' ';
	}
}
/* 1 2 3 */