다음을 통해 공유


multiset 클래스

표준 템플릿 라이브러리 multiset 클래스는 포함된 요소의 값이 고유할 필요가 없고 데이터가 자동 정렬되는 기준인 키 값으로 사용된 컬렉션의 데이터를 저장 및 검색하는 데 사용됩니다. multiset 요소의 키 값은 직접 변경할 수 없습니다. 대신, 이전 값을 삭제하고 새 값의 요소를 삽입해야 합니다.

template < 
   class Key,  
   class Compare=less<Key>,  
   class Allocator=allocator<Key>  
> 
class multiset

매개 변수

  • Key
    multiset에 저장되는 요소 데이터 형식입니다.

  • Compare
    함수 개체를 제공하는 이 형식은 multiset 내에서의 상대적인 순서를 결정하는 정렬 키로 두 요소 값을 비교할 수 있습니다. 이진 조건자 less<Key>가 기본값입니다.

  • Allocator
    multiset의 메모리 할당 및 할당 취소에 대한 세부 정보를 캡슐화하는 저장된 할당자 개체를 나타내는 형식입니다. 기본값은 할당자*<Key>입니다.*

설명

STL multiset 클래스는 다음과 같습니다.

  • 연관된 키 값을 기준으로 하며 요소 값의 효율적인 검색을 지원하는 가변 크기 컨테이너인 연관 컨테이너입니다.

  • 이는 해당 요소에 액세스할 수 있는 양방향 반복기를 제공하기 때문에 되돌릴 수 있습니다.

  • 해당 요소가 컨테이너 내에서 지정된 비교 함수에 따라 키 값을 기준으로 정렬되므로 정렬됩니다.

  • 해당 요소는 고유 키를 가질 필요가 없으므로 하나의 키 값은 이와 관련된 많은 요소 값을 가질 수 있습니다.

  • 해당 요소 값은 키 값과 구별되므로 간단한 연관 컨테이너입니다.

  • 제공하는 기능이 제네릭이고 요소로 포함된 데이터의 특정 형식과 독립적이므로 템플릿 클래스입니다. 사용될 데이터 형식은 대신 비교 함수 및 할당자와 함께 클래스 템플릿에서 매개 변수로 지정됩니다.

multiset 클래스에서 제공하는 반복기는 양방향 반복기이지만, insertmultiset 클래스 멤버 함수의 버전은 기능 요구 사항이 양방향 반복기 클래스에서 보장하는 것보다 최소화된 약한 입력 반복기를 템플릿 매개 변수로 사용합니다. 다른 반복기 개념은 관련된 상세 기능별로 범주를 구성합니다. 각 반복기 개념은 고유한 요구 사항이 있으며 이러한 요구 사항을 적용하는 알고리즘은 해당 반복기 형식이 제공하는 요구 사항으로 가정을 제한해야 합니다. 입력 반복기를 역참조하여 몇 가지 개체를 참조하고 시퀀스의 다음 반복기로 증가되는 경우를 가정할 수 있습니다. 이는 최소한의 기능 모음이지만, 클래스 멤버 함수의 맥락에서 반복기 범위(First, Last)에 대해 설명하는 데에는 충분합니다.

컨테이너 형식은 일반적으로 응용 프로그램에서 필요한 검색과 삽입의 형식을 기준으로 선택해야 합니다. 연관 컨테이너들은 조회, 삽입 및 제거 작업에 최적화되어 있습니다. 이러한 작업을 명시적으로 지원하는 멤버 함수는 컨테이너의 요소 개수를 진수로 하는 로그값에 평균적으로 비례하는 시간 안에 수행하므로 효율적입니다. 요소를 삽입할 경우 어떤 반복기도 무효화되지 않으며, 요소를 제거할 경우 제거된 요소를 명확히 가리키고 있는 반복기만 무효화됩니다.

응용 프로그램에서 값과 해당 키를 연결하는 조건을 만족할 경우 적절한 연관 컨테이너는 multiset입니다. multiset의 요소는 여러 개일 수 있고 자체 정렬 키로 사용되므로 키는 고유하지 않습니다. 이 형식의 구조에 대한 모델은 정렬된 목록입니다. 예를 들어, 단어 내의 단어가 두 번 이상 나타날 수 있습니다. 단어가 여러 번 나타날 수 있도록 허용되지 않은 경우 set가 적절한 컨테이너 구조입니다. 고유 키 단어 목록에 고유 정의가 연결된 경우 이 데이터를 포함하기 위한 적절한 구조는 map입니다. 대신 정의가 고유하지 않은 경우는 multimap이 적절한 컨테이너입니다.

multiset은 Compare 형식의 저장된 함수 개체를 호출하여 제어하는 시퀀스를 정렬합니다. 이 저장된 개체는 key_comp 멤버 함수를 호출하여 액세스할 수 있는 비교 함수입니다. 일반적으로, 이 순서를 정하려면 요소의 크기를 비교할 수 있어야 합니다. 즉, 제공된 어떤 두 요소에서 두 요소가 동일하거나(어떤 것도 다른 것보다 작지 않음) 하나가 다른 것보다 작음을 정할 수 있어야 합니다. 그러면 동일하지 않은 요소 사이에 정렬이 수행됩니다. 기술적으로 설명하면, 비교 함수는 표준 함수의 의미에서 엄밀히 약한 정렬을 수행하는 이진 조건자입니다. 이진 조건자 f(x,y)는 두 인수 개체 x, y 및 반환 값 true 또는 false가 있는 함수 개체입니다. 이진 조건자가 비재귀적, 비대칭 및 전이적인 경우 및 동등성이 전이적인 경우 set에 적용된 정렬은 엄밀히 약한 정렬입니다. 여기서, f(x,y) 및 f(y,x)가 모두 false인 경우 x 및 y 두 개체는 동등한 것으로 정의됩니다. 키 사이의 더 강력한 같음 조건이 동등 조건을 대체하는 경우, 정렬은 전체가 되고(모든 요소가 서로 상대적으로 정렬됨을 의미) 일치된 키는 서로 구분할 수 없게 됩니다.

생성자

multiset

비어 있거나 지정된 multiset의 전체 또는 일부의 복사본인 multiset을 생성합니다.

형식 정의

allocator_type

multiset 개체에 대한 allocator 클래스의 typedef

const_iterator

multiset의 const 요소를 읽을 수 있는 양방향 반복기에 대한 typedef

const_pointer

multiset의 const 요소를 가리키는 포인터에 대한 typedef

const_reference

const 작업을 읽고 수행하기 위해 multiset에 저장된 const 요소를 참조하기 위한 typedef

const_reverse_iterator

multiset의 const 요소를 읽을 수 있는 양방향 반복기에 대한 typedef

difference_type

반복기가 가리키는 요소 사이의 범위에 있는 multiset의 요소 개수에 대한 부호 있는 정수 typedef

iterator

multiset의 모든 요소를 읽거나 수정할 수 있는 양방향 반복기에 대한 typedef

key_compare

multiset의 두 요소간 상대적 순서를 결정하는 두 키를 비교할 수 있는 함수 개체에 대한 typedef

key_type

multiset의 두 요소간 상대적 순서를 결정하는 두 정렬 키를 비교할 수 있는 함수 개체에 대한 typedef

포인터

multiset의 요소를 가리키는 포인터에 대한 typedef

참조

multiset에 저장된 요소에 대한 참조의 typedef

reverse_iterator

역순 multiset의 요소를 읽거나 수정할 수 있는 양방향 반복기에 대한 typedef

size_type

multiset에서 요소 수를 표현할 수 있는 부호 없는 정수 형식입니다.

value_compare

두 요소를 정렬 키로 비교하여 multiset에서 상대적 순서를 결정할 수 있는 함수 개체의 typedef

value_type

해당 용량 내 multiset 요소로 저장된 개체를 값으로 설명하는 typedef

멤버 함수

begin

multiset의 첫 번째 요소를 가리키는 반복기를 반환합니다.

cbegin

multiset의 첫 번째 요소를 주소 지정하는 상수 반복기를 반환합니다.

cend

multiset에서 마지막 요소 다음에 나오는 위치를 주소 지정하는 상수 반복기를 반환합니다.

clear

multiset의 모든 요소를 지웁니다.

count

키가 매개 변수로 지정된 키와 일치하는 multiset의 요소 수를 반환합니다.

crbegin

역순 set에서 첫 번째 요소를 주소 지정하는 상수 반복기를 반환합니다.

crend

역순 set에서 마지막 요소 다음에 나오는 위치를 주소 지정하는 상수 반복기를 반환합니다.

emplace

생성된 요소를 multiset에 삽입합니다.

emplace_hint

배치 힌트를 사용하여 생성된 요소를 multiset에 삽입합니다.

empty

multiset가 비어 있는지 여부를 테스트합니다.

end

multiset에서 마지막 요소 다음 위치를 가리키는 반복기를 반환합니다.

equal_range

반복기 쌍을 반환합니다. multiset에서 지정된 키보다 큰 키가 있는 첫 번째 요소를 가리키는 쌍의 첫 번째 반복기 multiset에서 키보다 크거나 같은 키가 있는 첫 번째 요소를 가리키는 쌍의 두 번째 반복기

erase

지정된 위치에서 multiset의 요소 또는 요소의 범위를 제거하거나 지정된 키와 일치하는 요소를 제거합니다.

find

multiset에서 지정된 키와 같은 키를 가진 요소의 첫 번째 위치를 가리키는 반복기를 반환합니다.

get_allocator

multiset를 생성하는 데 사용된 allocator 개체의 복사본을 반환합니다.

insert

multiset에 요소 또는 요소의 범위를 삽입합니다.

key_comp

multiset의 두 요소간 상대적 순서를 결정하는 두 정렬 키를 비교할 수 있는 함수 개체를 제공합니다.

lower_bound

multiset에서 지정된 키보다 크거나 같은 키를 가진 첫 번째 요소에 반복기를 반환합니다.

max_size

multiset의 최대 길이를 반환합니다.

rbegin

역순 multiset의 첫 번째 요소를 가리키는 반복기를 반환합니다.

rend

역순 multiset에 마지막 요소 다음 위치를 가리키는 반복기를 반환합니다.

size

multiset의 요소 수를 반환합니다.

스왑

multiset의 요소를 교환합니다.

upper_bound

multiset에 지정된 키보다 큰 키를 가진 첫 번째 요소에 반복기를 반환합니다.

value_comp

multiset에서 요소 값의 정렬에 사용되는 비교 개체의 복사본을 검색합니다.

연산자

operator=

multiset의 요소를 다른 multiset의 복사본으로 대체합니다.

요구 사항

헤더: <set>

네임스페이스: std

참고 항목

참조

C++ 표준 라이브러리의 스레드 보안

표준 템플릿 라이브러리

개념

컨테이너

기타 리소스

<set> 멤버