SET
C++의 set은 STL(Standard Template Library)의 컨테이너 중 하나로, 중복된 값을 저장하지 않는 정렬된 자료구조입니다.
set은 이진 탐색 트리(binary search tree)를 기반으로 구현되어 있으며, 값 삽입, 삭제, 검색 등의 연산에 높은 성능을 보입니다.
set은 다음과 같은 특징을 가집니다:
1. 중복된 값을 허용하지 않습니다.
2. 값이 항상 정렬된 상태를 유지합니다. (기본적으로 오름차순 정렬)
3. 값 삽입, 삭제, 검색 등의 연산에 대해 빠른 속도를 보입니다.
4. 값이 삽입되면 자동으로 정렬되므로, 삽입 후에도 정렬을 할 필요가 없습니다.
set의 시간복잡도는 다음과 같습니다:
값 삽입: O(log n)
값 삭제: O(log n)
값 검색: O(log n)
set을 사용하기 위해서는 다음과 같이 헤더 파일 을 include해야 합니다:
#include <set>
SET 함수
insert()
set에 새로운 요소를 추가합니다.
std::set<int> s;
s.insert(1);
emplace()
set에 새로운 요소를 추가합니다.
insert()와 다르게, 객체를 복사하지 않고 바로 set 내부에서 생성합니다.
std::set<std::string> s;
s.emplace("hello");
erase()
set에서 특정 요소를 제거합니다.
std::set<int> s{1, 2, 3};
s.erase(2);
clear()
set의 모든 요소를 제거합니다.
std::set<int> s{1, 2, 3};
s.clear();
find()
set에서 특정 값에 대한 반복자(iterator)를 반환합니다.
해당 값이 set에 없으면 set::end()를 반환합니다.
std::set<int> s{1, 2, 3};
std::set<int>::iterator it = s.find(2);
if (it != s.end()) {
// 값이 있음
} else {
// 값이 없음
}
count()
set에서 특정 값이 몇 개 있는지 반환합니다.
set에서는 중복된 값을 허용하지 않기 때문에, 해당 값이 존재하지 않으면 0을 반환합니다.
std::set<int> s{1, 2, 2, 3};
int cnt = s.count(2); // 2가 두 개 있으므로 cnt는 1이 됩니다.
size()
set의 요소 개수를 반환합니다.
std::set<int> s{1, 2, 3};
int cnt = s.size(); // cnt는 3이 됩니다.
'백준 > 이론_C++' 카테고리의 다른 글
C++ vector 사용법 (0) | 2023.04.15 |
---|---|
문자열 뒤집기 C++ (0) | 2023.04.11 |
댓글