std:: set
|
헤더 파일에 정의됨
<set>
|
||
|
template
<
class
Key,
|
(1) | |
|
namespace
pmr
{
template
<
|
(2) | (C++17부터) |
std::set
는
Key
타입의 고유한 객체들을 정렬된 집합으로 포함하는 연관 컨테이너입니다. 정렬은 키 비교 함수
Compare
를 사용하여 수행됩니다. 검색, 삭제 및 삽입 연산은 로그 시간 복잡도를 가집니다. 집합은 일반적으로
Red–black trees
로 구현됩니다.
표준 라이브러리가 Compare 요구 사항을 사용하는 모든 곳에서, 유일성은 동등 관계를 사용하여 결정됩니다. 비공식적으로 표현하면, 두 객체 a 와 b 는 어느 것도 다른 것보다 작지 않을 경우 동등한 것으로 간주됩니다: ! comp ( a, b ) && ! comp ( b, a ) .
std::set
는
Container
,
AllocatorAwareContainer
,
AssociativeContainer
그리고
ReversibleContainer
요구사항을 충족합니다.
std::set
의 모든 멤버 함수는
constexpr
입니다: 상수 표현식 평가에서
std::set
객체를 생성하고 사용하는 것이 가능합니다.
그러나
|
(C++26부터) |
목차템플릿 매개변수
멤버 타입
멤버 함수
비멤버 함수
참고 사항
멤버 타입
예제
이 코드 실행
#include <algorithm> #include <iomanip> #include <iostream> #include <iterator> #include <set> #include <string_view> template<typename T> std::ostream& operator<<(std::ostream& out, const std::set<T>& set) { if (set.empty()) return out << "{}"; out << "{ " << *set.begin(); std::for_each(std::next(set.begin()), set.end(), [&out](const T& element) { out << ", " << element; }); return out << " }"; } int main() { std::set<int> set{1, 5, 3}; std::cout << set << '\n'; set.insert(2); std::cout << set << '\n'; set.erase(1); std::cout << set << "\n\n"; std::set<int> keys{3, 4}; for (int key : keys) { if (set.contains(key)) std::cout << set << " does contain " << key << '\n'; else std::cout << set << " doesn't contain " << key << '\n'; } std::cout << '\n'; std::string_view word = "element"; std::set<char> characters(word.begin(), word.end()); std::cout << "There are " << characters.size() << " unique characters in " << std::quoted(word) << ":\n" << characters << '\n'; } 출력: { 1, 3, 5 }
{ 1, 2, 3, 5 }
{ 2, 3, 5 }
{ 2, 3, 5 } does contain 3
{ 2, 3, 5 } doesn't contain 4
There are 5 unique characters in "element":
{ e, l, m, n, t }
결함 보고서다음 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
참고 항목
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||