vector의 중복된 원소를 제거할 때, unique 사용하면 편리
unique 함수는 연속된 같은 숫자를 다 날려준다.
unique 함수는 제거되지 않은 마지막 원소의 다음 원소의 iter 값이 반환됨 ( 필요 없는 값들의 첫 번째 원소의 iter)으로 erase 함수를 이용해서
erase(unique(v.begin(),v.end()),v.end())
이런 식으로 vector에서 중복된 원소들을 제거 가능 하다
#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> v1, v2,v3;
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> n;
while (n--) {
int x;
cin >> x;
v1.push_back(x);
v2.push_back(x);
}
sort(v2.begin(), v2.end());
/*for (int i = 0; i < v2.size()-1; i++) {
if (v2[i] != v2[i + 1]) v3.push_back(v2[i]);
}
v3.push_back(v2[v2.size() - 1]);*/
v2.erase(unique(v2.begin(), v2.end()),v2.end()); // unique 연속된 중복 원소를 vector의 끝으로 쓰레기값으로 보냄
for (auto c : v1) {
auto it = lower_bound(v2.begin(), v2.end(), c);
cout << it - v2.begin() << ' ';
}
}