본문 바로가기

Programming/C++ STL

[C++ STL] unique함수와 erase함수를 통한 문자열 중복제거

중복문자를 제거하기 위해 unique와 erase 함수를 사용할 수 있다.

1. 필요한 라이브러리 

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>

2. vector input받기

int N; cin >> N;
	for (int i = 0; i < N; i++) {
		string tmp;
		cin >> tmp;
		v.push_back(tmp);
	}

3.  sort하기 (sort를 꼭 해줘야함)

sort(v.begin(), v.end(), comp_length);

4. erase하기

unique의 return값은 유일한 원소들이 끝나고 첫번째 쓰레기 원소가 나오는 곳의 위치이다. 예를 들면, 112335가 존재할 때 unique를 통해서 123513이 나오는데. 이때 빨간표시한 자리를 나타낸다. 그래서 erase를 통해 123513 파란부분을 제거할 수 있다.

v.erase(unique(v.begin(), v.end()),v.end());​

5. 출력으로 결과 확인

for (int i = 0; i < v.size(); i++) {
		cout << v[i] << endl;
	}