티스토리 뷰
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/
https://sarah950716.tistory.com/6
'Programming > C++' 카테고리의 다른 글
[C++] getline을 이용해 입력받을 때 cin.ignore로 버퍼비우기 (0) | 2022.06.24 |
---|---|
[C/C++] 문자열을 정수로 변환하기 : atoi (0) | 2021.08.14 |
[C++] sort 함수 사용하기 (0) | 2021.07.29 |
[C++] vector 기본 사용방법 (0) | 2021.07.26 |
[C++] 입출력 속도 높이기 (0) | 2021.07.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 오라클
- 스프링
- 오류
- 인턴
- 프로그래머스
- 이클립스
- 환경설정
- Open API
- Thymeleaf
- 스프링부트
- 부트스트랩
- C++
- JSP
- 국비교육
- C
- 개발용어
- CSS
- 백준
- SQL
- 네트워크
- JVM
- 데이터베이스
- Java
- CS
- svn
- HeidiSQL
- 넥사크로
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함