티스토리 뷰

unique

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

using namespace std;

int main() {
  vector<int> v;
  v.push_back(1);
  v.push_back(2);
  v.push_back(3);
  v.push_back(2);
  v.push_back(2);
  
  for(int i = 0; i < v.size(); i++)
    cout << v[i] << ' ';
}
1 2 3 2 2

해당 벡터에서 중복되는 요소 "2"를 제거하려면 unique함수를 사용하면 된다. unique를 사용할 땐, 붙어있는 중복 요소들만 제거되기 때문에 반드시 정렬 후 사용해야하며, resize를 통해 변경된 길이를 적용해줘야한다.

 

  sort(v.begin(),v.end());
  v.resize(unique(v.begin(), v.end()) - v.begin());
  
  for(int i = 0; i < v.size(); i++)
    cout << v[i] << ' ';
1 2 3

 

set

혹은 set 자료구조를 이용해도 제거가 가능하다. set은 중복을 허용하지 않으며 정렬되어있는 자료구조이다. map 자료구조에서 key 값이 나열되어 있다고 생각하면 이해하기 편하다.

#include <iostream>
#include <vector>
#include <algorithm>
#include <set>

using namespace std;

int main() {
  vector<int> v;
  v.push_back(5);
  v.push_back(4);
  v.push_back(3);
  v.push_back(3);
  v.push_back(3);

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

  cout << endl;

  set<int> s(v.begin(),v.end());  
  
  for (set<int>::iterator it=s.begin(); it!=s.end(); ++it)
    cout << *it << ' ';

}
5 4 3 3 3
3 4 5

 

set에서 주로 사용되는 멤버함수는 다음과 같다.

 

s.size()

 노드 개수를 리턴

s.empty()

 사이즈가 0인지 아닌지를 확인

s.begin()

 첫 번째 원소를 가리키는 iterator 리턴

s.end()

 마지막 원소를 가리키는 iterator 리턴

s.insert(k)

 값이 k인 노드 추가

s.erase(k)

 값이 k인 노드 삭제

s.find(k)

 값이 k인 노드의 iterator 리턴 (노드가 존재하지 않는 경우, s의 마지막 원소를 가리키는 iterator 리턴)

s.count(k)

 값이 k와 일치하는 노드의 개수를 리턴

 

 

 

 

참고자료

 

https://www.cplusplus.com/reference/set/set/

 

set - C++ Reference

difference_typea signed integral type, identical to: iterator_traits ::difference_type usually the same as ptrdiff_t

www.cplusplus.com

https://sarah950716.tistory.com/6

 

[C++/STL]map, set

5. map 1) 정의 인덱스로 int가 아닌 다른 자료형을 사용할 수 있는 배열 (후에 사용법을 이해하기 편하도록 '배열'이라고 했지만, map의 내부적인 구조는 각 노드가 key와 value의 쌍으로 이루어진 '트

sarah950716.tistory.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함