multiset 클래스multiset Class

C++ 표준 라이브러리 multiset 클래스는 포함된 요소값이 고유할 필요가 없고 데이터가 자동 정렬되는 기준인 키 값으로 사용된 컬렉션의 데이터를 저장 및 검색하는 데 사용됩니다.The C++ Standard Library multiset class is used for the storage and retrieval of data from a collection in which the values of the elements contained need not be unique and in which they serve as the key values according to which the data is automatically ordered. 에 있는 요소의 키 값은 multiset 직접 변경할 수 없습니다.The key value of an element in a multiset may not be changed directly. 대신, 이전 값을 삭제하고 새 값의 요소를 삽입해야 합니다.Instead, old values must be deleted and elements with new values inserted.

구문Syntax

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

매개 변수Parameters

키인지Key
multiset에 저장되는 요소 데이터 형식입니다.The element data type to be stored in the multiset.

Compare
두 요소 값을 정렬 키로 비교 하 여에서 상대적 순서를 결정할 수 있는 함수 개체를 제공 하는 형식입니다 multiset .The type that provides a function object that can compare two element values as sort keys to determine their relative order in the multiset. 이진 조건자 less <Key> 값이 기본값입니다.The binary predicate less<Key> is the default value.

C + + 14에서는 std::less<> std::greater<> 형식 매개 변수가 없는 또는 조건자를 지정 하 여 유형이 다른 조회를 사용 하도록 설정할 수 있습니다.In C++14, you can enable heterogeneous lookup by specifying the std::less<> or std::greater<> predicate that has no type parameters. 자세한 내용은 연관 컨테이너의 유형이 다른 조회 를 참조 하세요.See Heterogeneous Lookup in Associative Containers for more information.

할당자Allocator
메모리의 할당 및 할당 취소에 대 한 세부 정보를 캡슐화 하는 저장 된 할당자 개체를 나타내는 형식입니다 multiset .The type that represents the stored allocator object that encapsulates details about the multiset's allocation and deallocation of memory. 기본값은 allocator<Key>입니다.The default value is allocator<Key>.

설명Remarks

C + + 표준 라이브러리 multiset 클래스는 다음과 같습니다.The C++ Standard Library multiset class is:

  • 연관된 키 값을 기준으로 하며 요소 값의 효율적인 검색을 지원하는 가변 크기 컨테이너인 연관 컨테이너입니다.An associative container, which is a variable size container that supports the efficient retrieval of element values based on an associated key value.

  • 이는 해당 요소에 액세스할 수 있는 양방향 반복기를 제공하기 때문에 되돌릴 수 있습니다.Reversible, because it provides bidirectional iterators to access its elements.

  • 해당 요소가 컨테이너 내에서 지정된 비교 함수에 따라 키 값을 기준으로 정렬되므로 정렬됩니다.Sorted, because its elements are ordered by key values within the container in accordance with a specified comparison function.

  • 해당 요소에 고유 키가 필요 하지 않기 때문에 하나의 키 값에 여러 개의 요소 값이 연결 될 수 있습니다.Multiple in the sense that its elements don't need to have unique keys, so that one key value can have many element values associated with it.

  • 해당 요소 값은 키 값과 구별되므로 간단한 연관 컨테이너입니다.A simple associative container because its element values are its key values.

  • 클래스 템플릿은 제공 된 기능이 일반적 이므로 요소로 포함 된 특정 데이터 형식과 독립적 이기 때문입니다.A class template, because the functionality it provides is generic and so independent of the specific type of data contained as elements. 사용될 데이터 형식은 대신 비교 함수 및 할당자와 함께 클래스 템플릿에서 매개 변수로 지정됩니다.The data type to be used is, instead, specified as a parameter in the class template along with the comparison function and allocator.

클래스에서 제공 하는 반복기는 multiset 양방향 반복기 이지만, insertmultiset 클래스 멤버 함수의 버전은 기능 요구 사항이 양방향 반복기 클래스에서 보장 하는 것 보다 최소화 된 약한 입력 반복기를 템플릿 매개 변수로 사용 합니다.The iterator provided by the multiset class is a bidirectional iterator, but the class member functions insert and multiset have versions that take as template parameters a weaker input iterator, whose functionality requirements are more minimal than those guaranteed by the class of bidirectional iterators. 다른 반복기 개념은 관련된 상세 기능별로 범주를 구성합니다.The different iterator concepts form a family related by refinements in their functionality. 각 반복기 개념은 고유한 요구 사항이 있으며 이러한 요구 사항을 적용하는 알고리즘은 해당 반복기 형식이 제공하는 요구 사항으로 가정을 제한해야 합니다.Each iterator concept has its own set of requirements and the algorithms that work with them must limit their assumptions to the requirements provided by that type of iterator. 입력 반복기를 역참조하여 몇 가지 개체를 참조하고 시퀀스의 다음 반복기로 증가되는 경우를 가정할 수 있습니다.It may be assumed that an input iterator may be dereferenced to refer to some object and that it may be incremented to the next iterator in the sequence. 이는 최소한의 기능 모음이지만, 클래스 구성원 함수의 맥락에서 반복기 범위[ First, Last)에 대해 설명하는 데에는 충분합니다.This is a minimal set of functionality, but it is enough to be able to talk meaningfully about a range of iterators [ First, Last) in the context of the class's member functions.

컨테이너 형식은 일반적으로 애플리케이션에서 필요한 검색과 삽입의 형식을 기준으로 선택해야 합니다.The choice of container type should be based in general on the type of searching and inserting required by the application. 연관 컨테이너는 조회, 삽입 및 제거 작업에 최적화되어 있습니다.Associative containers are optimized for the operations of lookup, insertion, and removal. 이러한 작업을 명시적으로 지 원하는 멤버 함수는 컨테이너의 요소 수에 대 한 로그에 비례 하는 평균 시간으로이 작업을 수행 하는 것이 효율적입니다.The member functions that explicitly support these operations are efficient, doing them in a time that is on average proportional to the logarithm of the number of elements in the container. 요소를 삽입할 경우 어떤 반복기도 무효화 되지 않으며, 요소를 제거 하면 제거 된 요소를 가리키는 반복기만 무효화 됩니다.Inserting elements invalidates no iterators, and removing elements invalidates only those iterators that had pointed at the removed elements.

multiset응용 프로그램에서 값과 해당 키를 연결 하는 조건이 충족 되는 경우는 선택의 연관 컨테이너 여야 합니다.The multiset should be the associative container of choice when the conditions associating the values with their keys are satisfies by the application. 의 요소는 multiset 여러 개일 수 있고 자체 정렬 키로 사용 되므로 키는 고유 하지 않습니다.The elements of a multiset may be multiple and serve as their own sort keys, so keys aren't unique. 이 형식의 구조에 대한 모델은 정렬된 목록입니다. 예를 들어, 단어 내의 단어가 두 번 이상 나타날 수 있습니다.A model for this type of structure is an ordered list of, say, words in which the words may occur more than once. 단어가 여러 번 나타날 수 있도록 허용되지 않은 경우 set가 적절한 컨테이너 구조입니다.Had multiple occurrences of the words not been allowed, then a set would have been the appropriate container structure. 고유 키 단어 목록에 고유 정의가 연결된 경우 이 데이터를 포함하기 위한 적절한 구조는 map입니다.If unique definitions were attached as values to the list of unique key words, then a map would be an appropriate structure to contain this data. 대신 정의가 고유 하지 않은 경우는 multimap 선택의 컨테이너가 됩니다.If instead the definitions weren't unique, then a multimap would be the container of choice.

multiset Compare형식의 저장 된 함수 개체를 호출 하 여 제어 하는 시퀀스를 정렬 합니다.The multiset orders the sequence it controls by calling a stored function object of type Compare. 이 저장된 개체는 key_comp 구성원 함수를 호출하여 액세스할 수 있는 비교 함수입니다.This stored object is a comparison function that may be accessed by calling the member function key_comp. 일반적으로이 순서를 설정 하려면 요소를 비교할 수 있어야 합니다. 즉, 두 요소가 모두 동일 하거나 (어느 것도 다른 것 보다 작지 않음) 하나가 다른 것 보다 작음을 결정할 수 있습니다.In general, the elements need be merely less than comparable to establish this order: so that, given any two elements, it may be determined either that they're equivalent (in the sense that neither is less than the other) or that one is less than the other. 그러면 동일하지 않은 요소 사이에 정렬이 수행됩니다.This results in an ordering between the nonequivalent elements. 기술적으로 설명하면, 비교 함수는 표준 함수의 의미에서 엄밀히 약한 정렬을 수행하는 이진 조건자입니다.On a more technical note, the comparison function is a binary predicate that induces a strict weak ordering in the standard mathematical sense. 이진 조건자 f(x, y)는 두 인수 개체 xy 와 또는의 반환 값이 있는 함수 개체입니다 true false .A binary predicate f(x, y) is a function object that has two argument objects x and y and a return value of true or false. 이진 조건자가 비재귀적, 비대칭 및 전이적인 경우 및 동등성이 전이적 인 경우 집합에 적용 된 정렬은 엄격한 약한 정렬입니다. 여기서, f(x, y) 및 f(y, x)가 모두 false 인 경우 x 및 y 두 개체는 동등한 것으로 정의 됩니다.An ordering imposed on a set is a strict weak ordering if the binary predicate is irreflexive, antisymmetric, and transitive and if equivalence is transitive, where two objects x and y are defined to be equivalent when both f(x,y) and f(y,x) are false. 키 사이의 더 강력한 같음 조건이 동등 조건을 대체하는 경우, 정렬은 전체가 되고(모든 요소가 서로 상대적으로 정렬됨을 의미) 일치된 키는 서로 구분할 수 없게 됩니다.If the stronger condition of equality between keys replaces that of equivalence, then the ordering becomes total (in the sense that all the elements are ordered with respect to each other) and the keys matched will be indiscernible from each other.

C + + 14에서는 std::less<> std::greater<> 형식 매개 변수가 없는 또는 조건자를 지정 하 여 유형이 다른 조회를 사용 하도록 설정할 수 있습니다.In C++14, you can enable heterogeneous lookup by specifying the std::less<> or std::greater<> predicate that has no type parameters. 자세한 내용은 연관 컨테이너의 유형이 다른 조회 를 참조 하세요.See Heterogeneous Lookup in Associative Containers for more information.

생성자Constructors

생성자Constructor DescriptionDescription
multisetmultiset 비어 있거나 지정된 multiset의 전체 또는 일부의 복사본인 multiset을 생성합니다.Constructs a multiset that is empty or that is a copy of all or part of a specified multiset.

TypedefsTypedefs

형식 이름Type name 설명Description
allocator_typeallocator_type allocator 개체에 대한 multiset 클래스의 typedefA typedef for the allocator class for the multiset object.
const_iteratorconst_iterator 의 요소를 읽을 수 있는 양방향 반복기에 대 한 typedef const multisetA typedef for a bidirectional iterator that can read a const element in the multiset.
const_pointerconst_pointer 의 요소에 대 한 포인터의 typedef입니다 const multiset .A typedef for a pointer to a const element in a multiset.
const_referenceconst_reference const multiset 작업을 읽고 수행 하기 위해에 저장 된 요소에 대 한 참조의 typedef입니다 const .A typedef for a reference to a const element stored in a multiset for reading and doing const operations.
const_reverse_iteratorconst_reverse_iterator 의 모든 요소를 읽을 수 있는 양방향 반복기에 대 한 typedef const multisetA typedef for a bidirectional iterator that can read any const element in the multiset.
difference_typedifference_type 반복기가 가리키는 요소 사이의 범위에 있는 multiset의 요소 개수에 대한 부호 있는 정수 typedefA signed integer typedef for the number of elements of a multiset in a range between elements pointed to by iterators.
반복iterator multiset의 모든 요소를 읽거나 수정할 수 있는 양방향 반복기에 대한 typedefA typedef for a bidirectional iterator that can read or modify any element in a multiset.
key_comparekey_compare multiset의 두 요소간 상대적 순서를 결정하는 두 키를 비교할 수 있는 함수 개체에 대한 typedefA typedef for a function object that can compare two keys to determine the relative order of two elements in the multiset.
key_typekey_type multiset의 두 요소간 상대적 순서를 결정하는 두 정렬 키를 비교할 수 있는 함수 개체에 대한 typedefA typedef for a function object that can compare two sort keys to determine the relative order of two elements in the multiset.
놓고pointer multiset의 요소를 가리키는 포인터에 대한 typedefA typedef for a pointer to an element in a multiset.
referencereference multiset에 저장된 요소에 대한 참조의 typedefA typedef for a reference to an element stored in a multiset.
reverse_iteratorreverse_iterator 역순 multiset의 요소를 읽거나 수정할 수 있는 양방향 반복기에 대한 typedefA typedef for a bidirectional iterator that can read or modify an element in a reversed multiset.
size_typesize_type multiset에서 요소 수를 표현할 수 있는 부호 없는 정수 형식입니다.An unsigned integer type that can represent the number of elements in a multiset.
value_comparevalue_compare 두 요소를 정렬 키로 비교하여 multiset에서 상대적 순서를 결정할 수 있는 함수 개체의 typedefThe typedef for a function object that can compare two elements as sort keys to determine their relative order in the multiset.
value_typevalue_type 해당 용량 내 multiset 요소로 저장된 개체를 값으로 설명하는 typedefA typedef that describes an object stored as an element as a multiset in its capacity as a value.

멤버 함수Member functions

멤버 함수Member function DescriptionDescription
시작begin multiset의 첫 번째 요소를 가리키는 반복기를 반환합니다.Returns an iterator that points to the first element in the multiset.
cbegincbegin multiset의 첫 번째 요소를 주소 지정하는 상수 반복기를 반환합니다.Returns a const iterator that addresses the first element in the multiset.
cendcend multiset에서 마지막 요소 다음에 나오는 위치를 주소 지정하는 상수 반복기를 반환합니다.Returns a const iterator that addresses the location succeeding the last element in a multiset.
clearclear multiset의 모든 요소를 지웁니다.Erases all the elements of a multiset.
containsc + + 20 포함containsC++20 에 지정 된 키를 가진 요소가 있는지 확인 multiset 합니다.Check if there's an element with the specified key in the multiset.
countcount 키가 매개 변수로 지정된 키와 일치하는 multiset의 요소 수를 반환합니다.Returns the number of elements in a multiset whose key matches the key specified as a parameter.
crbegincrbegin 역순 multiset에서 첫 번째 요소를 주소 지정하는 상수 반복기를 반환합니다.Returns a const iterator addressing the first element in a reversed multiset.
crendcrend 역순 multiset에서 마지막 요소 다음에 나오는 위치를 주소 지정하는 상수 반복기를 반환합니다.Returns a const iterator that addresses the location succeeding the last element in a reversed multiset.
emplaceemplace 생성된 요소를 multiset에 삽입합니다.Inserts an element constructed in place into a multiset.
emplace_hintemplace_hint 배치 힌트를 사용하여 생성된 요소를 multiset에 삽입합니다.Inserts an element constructed in place into a multiset, with a placement hint.
emptyempty multiset가 비어 있는지 여부를 테스트합니다.Tests if a multiset is empty.
endend multiset에서 마지막 요소 다음 위치를 가리키는 반복기를 반환합니다.Returns an iterator that points to the location after the last element in a multiset.
equal_rangeequal_range 반복기 쌍을 반환합니다.Returns a pair of iterators. multiset에서 지정된 키보다 큰 키가 있는 첫 번째 요소를 가리키는 쌍의 첫 번째 반복기The first iterator in the pair points to the first element in a multiset with a key that is greater than a specified key. multiset에서 키보다 크거나 같은 키가 있는 첫 번째 요소를 가리키는 쌍의 두 번째 반복기The second iterator in the pair points to first element in the multiset with a key that is equal to or greater than the key.
eraseerase 지정된 위치에서 multiset의 요소 또는 요소의 범위를 제거하거나 지정된 키와 일치하는 요소를 제거합니다.Removes an element or a range of elements in a multiset from specified positions or removes elements that match a specified key.
findfind multiset에서 지정된 키와 같은 키를 가진 요소의 첫 번째 위치를 가리키는 반복기를 반환합니다.Returns an iterator that points to the first location of an element in a multiset that has a key equal to a specified key.
get_allocatorget_allocator allocator를 생성하는 데 사용된 multiset 개체의 복사본을 반환합니다.Returns a copy of the allocator object that is used to construct the multiset.
insertinsert multiset에 요소 또는 요소의 범위를 삽입합니다.Inserts an element or a range of elements into a multiset.
key_compkey_comp multiset의 두 요소간 상대적 순서를 결정하는 두 정렬 키를 비교할 수 있는 함수 개체를 제공합니다.Provides a function object that can compare two sort keys to determine the relative order of two elements in the multiset.
lower_boundlower_bound multiset에서 지정된 키보다 크거나 같은 키를 가진 첫 번째 요소에 반복기를 반환합니다.Returns an iterator to the first element in a multiset with a key that is equal to or greater than a specified key.
max_sizemax_size multiset의 최대 길이를 반환합니다.Returns the maximum length of the multiset.
rbeginrbegin 역순 multiset의 첫 번째 요소를 가리키는 반복기를 반환합니다.Returns an iterator that points to the first element in a reversed multiset.
rendrend 역순 multiset에 마지막 요소 다음 위치를 가리키는 반복기를 반환합니다.Returns an iterator that points to the location succeeding the last element in a reversed multiset.
sizesize multiset의 요소 수를 반환합니다.Returns the number of elements in a multiset.
스왑을swap multiset의 요소를 교환합니다.Exchanges the elements of two multisets.
upper_boundupper_bound multiset에 지정된 키보다 큰 키를 가진 첫 번째 요소에 반복기를 반환합니다.Returns an iterator to the first element in a multiset with a key that is greater than a specified key.
value_compvalue_comp multiset에서 요소 값의 정렬에 사용되는 비교 개체의 복사본을 검색합니다.Retrieves a copy of the comparison object that is used to order element values in a multiset.

연산자Operators

연산자Operator DescriptionDescription
연산자 =operator= multiset의 요소를 다른 multiset의 복사본으로 대체합니다.Replaces the elements of a multiset with a copy of another multiset.

요구 사항Requirements

헤더:<set>Header: <set>

네임스페이스: stdNamespace: std

multiset:: allocator_typemultiset::allocator_type

multiset 개체의 할당자 클래스를 나타내는 형식입니다.A type that represents the allocator class for the multiset object

typedef Allocator allocator_type;

설명Remarks

allocator_type는 템플릿 매개 변수 Allocator의 동의어입니다.allocator_type is a synonym for the template parameter Allocator.

Allocator에 대한 자세한 내용은 multiset 클래스 항목의 설명 섹션을 참조하세요.For more information on Allocator, see the Remarks section of the multiset Class topic.

예제Example

allocator_type을 사용하는 예제는 get_allocator의 예제를 참조하세요.See the example for get_allocator for an example using allocator_type

multiset:: beginmultiset::begin

multiset의 첫 번째 요소 주소를 지정하는 반복기를 반환합니다.Returns an iterator addressing the first element in the multiset.

const_iterator begin() const;

iterator begin();

Return ValueReturn Value

multiset의 첫 번째 요소 또는 빈 multiset 다음의 위치 주소를 지정하는 양방향 반복기입니다.A bidirectional iterator addressing the first element in the multiset or the location succeeding an empty multiset.

예제Example

// multiset_begin.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   multiset <int> ms1;
   multiset <int>::iterator ms1_Iter;
   multiset <int>::const_iterator ms1_cIter;

   ms1.insert( 1 );
   ms1.insert( 2 );
   ms1.insert( 3 );

   ms1_Iter = ms1.begin( );
   cout << "The first element of ms1 is " << *ms1_Iter << endl;

   ms1_Iter = ms1.begin( );
   ms1.erase( ms1_Iter );

   // The following 2 lines would err as the iterator is const
   // ms1_cIter = ms1.begin( );
   // ms1.erase( ms1_cIter );

   ms1_cIter = ms1.begin( );
   cout << "The first element of ms1 is now " << *ms1_cIter << endl;
}
The first element of ms1 is 1
The first element of ms1 is now 2

multiset:: cbeginmultiset::cbegin

const 범위에 있는 첫 번째 요소의 주소를 처리 하는 반복기를 반환 합니다.Returns a const iterator that addresses the first element in the range.

const_iterator cbegin() const;

Return ValueReturn Value

const 범위의 첫 번째 요소 또는 빈 범위의 끝 바로 다음 위치를 가리키는 양방향 액세스 반복기입니다 (빈 범위의 경우 cbegin() == cend() ).A const bidirectional-access iterator that points at the first element of the range, or the location just beyond the end of an empty range (for an empty range, cbegin() == cend()).

설명Remarks

의 반환 값을 사용 하 여 cbegin 범위의 요소를 수정할 수 없습니다.With the return value of cbegin, the elements in the range can't be modified.

begin() 멤버 함수 대신 이 멤버 함수를 사용하여 반환 값이 const_iterator임을 보장할 수 있습니다.You can use this member function in place of the begin() member function to guarantee that the return value is const_iterator. 일반적으로 다음 예제와 같이 auto 형식 추론 키워드와 함께 사용합니다.Typically, it's used in conjunction with the auto type deduction keyword, as shown in the following example. 이 예제에서는 Container 및를 지 원하는 수정 가능 (비 const ) 컨테이너로 가정 begin() cbegin() 합니다.In the example, consider Container to be a modifiable (non- const) container of any kind that supports begin() and cbegin().

auto i1 = Container.begin();
// i1 is Container<T>::iterator
auto i2 = Container.cbegin();

// i2 is Container<T>::const_iterator

multiset:: cendmultiset::cend

const 범위에서 마지막 요소 바로 다음 위치의 주소를 가리키는 반복기를 반환 합니다.Returns a const iterator that addresses the location just beyond the last element in a range.

const_iterator cend() const;

Return ValueReturn Value

const 범위 끝의 바로 다음을 가리키는 양방향 액세스 반복기입니다.A const bidirectional-access iterator that points just beyond the end of the range.

설명Remarks

cend는 반복기가 범위 끝을 통과했는지 여부를 테스트하는 데 사용됩니다.cend is used to test whether an iterator has passed the end of its range.

end() 멤버 함수 대신 이 멤버 함수를 사용하여 반환 값이 const_iterator임을 보장할 수 있습니다.You can use this member function in place of the end() member function to guarantee that the return value is const_iterator. 일반적으로 다음 예제와 같이 auto 형식 추론 키워드와 함께 사용합니다.Typically, it's used in conjunction with the auto type deduction keyword, as shown in the following example. 이 예제에서는 Container 및를 지 원하는 수정 가능 (비 const ) 컨테이너로 가정 end() cend() 합니다.In the example, consider Container to be a modifiable (non- const) container of any kind that supports end() and cend().

auto i1 = Container.end();
// i1 is Container<T>::iterator
auto i2 = Container.cend();

// i2 is Container<T>::const_iterator

에서 반환 된 값은 cend 역참조 되지 않아야 합니다.The value returned by cend shouldn't be dereferenced.

multiset:: clearmultiset::clear

multiset의 모든 요소를 지웁니다.Erases all the elements of a multiset.

void clear();

예제Example

// multiset_clear.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   multiset <int> ms1;

   ms1.insert( 1 );
   ms1.insert( 2 );

   cout << "The size of the multiset is initially "
        << ms1.size( ) << "." << endl;

   ms1.clear( );
   cout << "The size of the multiset after clearing is "
        << ms1.size( ) << "." << endl;
}
The size of the multiset is initially 2.
The size of the multiset after clearing is 0.

multiset:: const_iteratormultiset::const_iterator

Multiset의 요소를 읽을 수 있는 양방향 반복기를 제공 하는 형식입니다 const .A type that provides a bidirectional iterator that can read a const element in the multiset.

typedef implementation-defined const_iterator;

설명Remarks

형식은 const_iterator 요소의 값을 수정 하는 데 사용할 수 없습니다.A type const_iterator can't be used to modify the value of an element.

예제Example

const_iterator를 사용하는 예제는 begin의 예제를 참조하세요.See the example for begin for an example using const_iterator.

multiset:: const_pointermultiset::const_pointer

Multiset의 요소에 대 한 포인터를 제공 하는 형식입니다 const .A type that provides a pointer to a const element in a multiset.

typedef typename allocator_type::const_pointer const_pointer;

설명Remarks

형식은 const_pointer 요소의 값을 수정 하는 데 사용할 수 없습니다.A type const_pointer can't be used to modify the value of an element.

대부분의 경우 iterator를 사용하여 multiset 개체의 요소에 액세스해야 합니다.In most cases, an iterator should be used to access the elements in a multiset object.

multiset:: const_referencemultiset::const_reference

const 작업을 읽고 수행 하기 위해 multiset에 저장 된 요소에 대 한 참조를 제공 하는 형식입니다 const .A type that provides a reference to a const element stored in a multiset for reading and doing const operations.

typedef typename allocator_type::const_reference const_reference;

예제Example

// multiset_const_ref.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   multiset <int> ms1;

   ms1.insert( 10 );
   ms1.insert( 20 );

   // Declare and initialize a const_reference &Ref1
   // to the 1st element
   const int &Ref1 = *ms1.begin( );

   cout << "The first element in the multiset is "
        << Ref1 << "." << endl;

   // The following line would cause an error because the
   // const_reference can't be used to modify the multiset
   // Ref1 = Ref1 + 5;
}
The first element in the multiset is 10.

multiset:: const_reverse_iteratormultiset::const_reverse_iterator

Multiset의 모든 요소를 읽을 수 있는 양방향 반복기를 제공 하는 형식입니다 const .A type that provides a bidirectional iterator that can read any const element in the multiset.

typedef std::reverse_iterator<const_iterator> const_reverse_iterator;

설명Remarks

형식은 const_reverse_iterator 요소 값을 수정할 수 없으며 multiset를 역방향으로 반복 하는 데 사용 됩니다.A type const_reverse_iterator can't modify the value of an element and is used to iterate through the multiset in reverse.

예제Example

const_reverse_iterator를 선언하고 사용하는 방법에 대한 예제는 rend의 예제를 참조하세요.See the example for rend for an example of how to declare and use the const_reverse_iterator.

multiset:: containsmultiset::contains

에 지정 된 키를 가진 요소가 있는지 확인 multiset 합니다.Check if there's an element with the specified key in the multiset.

bool contains(const Key& key) const;
template<class K> bool contains(const K& key) const;

매개 변수Parameters

시계의K
키의 형식입니다.The type of the key.

키인지key
찾을 요소의 키 값입니다.The element's key value to look for.

Return ValueReturn Value

true 요소가 컨테이너에 있으면이 고, 그렇지 않으면입니다. false 그렇지 않으면입니다.true if the element is found in the container; false otherwise.

설명Remarks

contains() 는 c + + 20의 새로운 기능은입니다.contains() is new in C++20. 이를 사용 하려면 /sd: c + + 최신 컴파일러 옵션을 지정 합니다.To use it, specify the /std:c++latest compiler option.

template<class K> bool contains(const K& key) const 가 투명 한 경우에만 오버 로드 확인에 참여 key_compare 합니다.template<class K> bool contains(const K& key) const only participates in overload resolution if key_compare is transparent. 자세한 내용은 연관 컨테이너의 유형이 다른 조회 를 참조 하세요.See Heterogeneous lookup in associative containers for more information.

예제Example

// Requires /std:c++latest
#include <set>
#include <iostream>

int main()
{
    std::multiset<int> theMultiSet = {1, 2};

    std::cout << std::boolalpha; // so booleans show as 'true' or 'false'
    std::cout << theMultiSet.contains(2) << '\n';
    std::cout << theMultiSet.contains(3) << '\n';
    
    return 0;
}
true
false

multiset:: countmultiset::count

키가 매개 변수로 지정된 키와 일치하는 multiset의 요소 수를 반환합니다.Returns the number of elements in a multiset whose key matches a parameter-specified key.

size_type count(const Key& key) const;

매개 변수Parameters

키인지key
multiset에서 일치하는지 확인할 요소의 키입니다.The key of the elements to be matched from the multiset.

Return ValueReturn Value

정렬 키가 매개 변수 키와 일치하는 multiset의 요소 수입니다.The number of elements in the multiset whose sort key matches the parameter key.

설명Remarks

멤버 함수는 다음 범위에 있는 x 요소의 수를 반환합니다.The member function returns the number of elements x in the range

[ lower_bound (), upper_bound ())[ lower_bound(key), upper_bound(key) )

예제Example

다음 예제에서는 multiset::count 멤버 함수의 사용을 보여 줍니다.The following example demonstrates the use of the multiset::count member function.

// multiset_count.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main()
{
    using namespace std;
    multiset<int> ms1;
    multiset<int>::size_type i;

    ms1.insert(1);
    ms1.insert(1);
    ms1.insert(2);

    // Elements don't need to be unique in multiset,
    // so duplicates are allowed and counted.
    i = ms1.count(1);
    cout << "The number of elements in ms1 with a sort key of 1 is: "
         << i << "." << endl;

    i = ms1.count(2);
    cout << "The number of elements in ms1 with a sort key of 2 is: "
         << i << "." << endl;

    i = ms1.count(3);
    cout << "The number of elements in ms1 with a sort key of 3 is: "
         << i << "." << endl;
}
The number of elements in ms1 with a sort key of 1 is: 2.
The number of elements in ms1 with a sort key of 2 is: 1.
The number of elements in ms1 with a sort key of 3 is: 0.

multiset:: crbeginmultiset::crbegin

반전된 multiset에서 첫 번째 요소를 주소 지정하는 상수 반복기를 반환합니다.Returns a const iterator addressing the first element in a reversed multiset.

const_reverse_iterator crbegin() const;

Return ValueReturn Value

반전된 multiset의 첫 번째 요소에 대한 주소를 지정하거나, 반전 해제된 multiset의 마지막 요소에 대한 주소를 지정하는 상수 역방향 양방향 반복기입니다.A const reverse bidirectional iterator addressing the first element in a reversed multiset or addressing what had been the last element in the unreversed multiset.

설명Remarks

crbegin은 multiset에서 begin이 사용되는 것처럼 역방향 multiset에 사용됩니다.crbegin is used with a reversed multiset just as begin is used with a multiset.

반환 값 crbegin 이 이면 multiset 개체를 수정할 수 없습니다.With the return value of crbegin, the multiset object can't be modified.

crbegin은 multiset를 역방향으로 반복할 때 사용할 수 있습니다.crbegin can be used to iterate through a multiset backwards.

예제Example

// multiset_crbegin.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   multiset <int> ms1;
   multiset <int>::const_reverse_iterator ms1_crIter;

   ms1.insert( 10 );
   ms1.insert( 20 );
   ms1.insert( 30 );

   ms1_crIter = ms1.crbegin( );
   cout << "The first element in the reversed multiset is "
        << *ms1_crIter << "." << endl;
}
The first element in the reversed multiset is 30.

multiset:: crendmultiset::crend

역방향 multiset에서 마지막 요소 다음에 나오는 위치의 주소를 지정하는 상수 반복기를 반환합니다.Returns a const iterator that addresses the location succeeding the last element in a reversed multiset.

const_reverse_iterator crend() const;

Return ValueReturn Value

역방향 multiset에서 마지막 요소 다음의 위치(정방향 multiset의 첫 번째 요소 앞의 위치) 주소를 지정하는 const 역방향 양방향 반복기입니다.A const reverse bidirectional iterator that addresses the location succeeding the last element in a reversed multiset (the location that had preceded the first element in the unreversed multiset).

설명Remarks

crend는 multiset에서 end가 사용되는 것처럼 역방향 multiset에 사용됩니다.crend is used with a reversed multiset just as end is used with a multiset.

반환 값 crend 이 이면 multiset 개체를 수정할 수 없습니다.With the return value of crend, the multiset object can't be modified.

crend를 사용하여 역방향 반복기가 multiset 끝에 도달했는지를 테스트할 수 있습니다.crend can be used to test to whether a reverse iterator has reached the end of its multiset.

에서 반환 된 값은 crend 역참조 되지 않아야 합니다.The value returned by crend shouldn't be dereferenced.

예제Example

// multiset_crend.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main() {
   using namespace std;
   multiset <int> ms1;
   multiset <int>::const_reverse_iterator ms1_crIter;

   ms1.insert( 10 );
   ms1.insert( 20 );
   ms1.insert( 30 );

   ms1_crIter = ms1.crend( ) ;
   ms1_crIter--;
   cout << "The last element in the reversed multiset is "
        << *ms1_crIter << "." << endl;
}

multiset::d ifference_typemultiset::difference_type

반복기가 가리키는 요소 사이의 범위에 있는 multiset의 요소 수를 나타내는 데 사용할 수 있는 부호 있는 정수 형식입니다.A signed integer type that can be used to represent the number of elements of a multiset in a range between elements pointed to by iterators.

typedef typename allocator_type::difference_type difference_type;

설명Remarks

difference_type은 컨테이너의 반복기를 빼거나 더할 때 반환되는 형식입니다.The difference_type is the type returned when subtracting or incrementing through iterators of the container. difference_type은 일반적으로 firstlast 반복기 사이의 [ first, last) 범위 내 요소 수를 나타내는 데 사용됩니다. 여기에는 first가 가리키는 요소와 last가 가리키는 요소까지의 요소 범위가 포함됩니다(마지막 요소는 포함되지 않음).The difference_type is typically used to represent the number of elements in the range [ first, last) between the iterators first and last, includes the element pointed to by first and the range of elements up to, but not including, the element pointed to by last.

difference_type설정 등의 가역 컨테이너에서 지 원하는 양방향 반복기의 클래스를 포함 하는 입력 반복기의 요구 사항을 충족 하는 모든 반복기에는를 사용할 수 있지만, 반복기 간의 빼기는 vector와 같은 임의 액세스 컨테이너가 제공 하는 임의 액세스 반복기 에서만 지원 됩니다.Although difference_type is available for all iterators that satisfy the requirements of an input iterator, which includes the class of bidirectional iterators supported by reversible containers like set, subtraction between iterators is only supported by random-access iterators provided by a random-access container like vector.

예제Example

// multiset_diff_type.cpp
// compile with: /EHsc
#include <iostream>
#include <set>
#include <algorithm>

int main( )
{
   using namespace std;

   multiset <int> ms1;
   multiset <int>::iterator ms1_Iter, ms1_bIter, ms1_eIter;

   ms1.insert( 20 );
   ms1.insert( 10 );
   ms1.insert( 20 );

   ms1_bIter = ms1.begin( );
   ms1_eIter = ms1.end( );

   multiset <int>::difference_type   df_typ5, df_typ10, df_typ20;

   df_typ5 = count( ms1_bIter, ms1_eIter, 5 );
   df_typ10 = count( ms1_bIter, ms1_eIter, 10 );
   df_typ20 = count( ms1_bIter, ms1_eIter, 20 );

   // The keys, and hence the elements, of a multiset aren't unique
   cout << "The number '5' occurs " << df_typ5
        << " times in multiset ms1.\n";
   cout << "The number '10' occurs " << df_typ10
        << " times in multiset ms1.\n";
   cout << "The number '20' occurs " << df_typ20
        << " times in multiset ms1.\n";

   // Count the number of elements in a multiset
   multiset <int>::difference_type  df_count = 0;
   ms1_Iter = ms1.begin( );
   while ( ms1_Iter != ms1_eIter)
   {
      df_count++;
      ms1_Iter++;
   }

   cout << "The number of elements in the multiset ms1 is: "
        << df_count << "." << endl;
}
The number '5' occurs 0 times in multiset ms1.
The number '10' occurs 1 times in multiset ms1.
The number '20' occurs 2 times in multiset ms1.
The number of elements in the multiset ms1 is: 3.

multiset:: emplacemultiset::emplace

배치 힌트를 사용하여 생성된 요소를 제 위치에 삽입합니다. 복사 또는 이동 작업은 수행되지 않습니다.Inserts an element constructed in place (no copy or move operations are performed), with a placement hint.

template <class... Args>
iterator emplace(Args&&... args);

매개 변수Parameters

argsargs
multiset에 삽입할 요소를 생성하기 위해 전달되는 인수입니다.The arguments forwarded to construct an element to be inserted into the multiset.

Return ValueReturn Value

새로 삽입된 요소에 대한 반복기입니다.An iterator to the newly inserted element.

설명Remarks

이 함수는 컨테이너 요소에 대한 참조는 무효화하지 않지만 컨테이너에 대한 모든 반복기는 무효화할 수 있습니다.No references to container elements are invalidated by this function, but it may invalidate all iterators to the container.

Emplacement 중에 예외가 throw 되 면 컨테이너의 상태가 수정 되지 않습니다.During emplacement, if an exception is thrown, the container's state isn't modified.

예제Example

// multiset_emplace.cpp
// compile with: /EHsc
#include <set>
#include <string>
#include <iostream>

using namespace std;

template <typename S> void print(const S& s) {
    cout << s.size() << " elements: ";

    for (const auto& p : s) {
        cout << "(" << p << ") ";
    }

    cout << endl;
}

int main()
{
    multiset<string> s1;

    s1.emplace("Anna");
    s1.emplace("Bob");
    s1.emplace("Carmine");

    cout << "multiset modified, now contains ";
    print(s1);
    cout << endl;

    s1.emplace("Bob");

    cout << "multiset modified, now contains ";
    print(s1);
    cout << endl;
}

multiset:: emplace_hintmultiset::emplace_hint

배치 힌트를 사용하여 생성된 요소를 제 위치에 삽입합니다. 복사 또는 이동 작업은 수행되지 않습니다.Inserts an element constructed in place (no copy or move operations are performed), with a placement hint.

template <class... Args>
iterator emplace_hint(
    const_iterator where,
    Args&&... args);

매개 변수Parameters

argsargs
multiset에 삽입할 요소를 생성하기 위해 전달되는 인수입니다.The arguments forwarded to construct an element to be inserted into the multiset.

위치where
올바른 삽입 지점 검색을 시작할 위치입니다.The place to start searching for the correct point of insertion. 이 지점이 바로 앞에오면 로그 시간 대신 분할 상환 상수 시간에 삽입이 발생할 수 있습니다.(If that point immediately precedes where, insertion can occur in amortized constant time instead of logarithmic time.)

Return ValueReturn Value

새로 삽입된 요소에 대한 반복기입니다.An iterator to the newly inserted element.

설명Remarks

이 함수는 컨테이너 요소에 대한 참조는 무효화하지 않지만 컨테이너에 대한 모든 반복기는 무효화할 수 있습니다.No references to container elements are invalidated by this function, but it may invalidate all iterators to the container.

Emplacement 중에 예외가 throw 되 면 컨테이너의 상태가 수정 되지 않습니다.During emplacement, if an exception is thrown, the container's state isn't modified.

코드 예제를 보려면 set::emplace_hint를 참조하세요.For a code example, see set::emplace_hint.

multiset:: emptymultiset::empty

multiset가 비어 있는지를 테스트합니다.Tests if a multiset is empty.

bool empty() const;

Return ValueReturn Value

true multiset이 비어 있으면이 고, 그렇지 않으면입니다. false multiset이 비어 있지 않으면입니다.true if the multiset is empty; false if the multiset is nonempty.

예제Example

// multiset_empty.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main()
{
   using namespace std;
   multiset <int> ms1, ms2;
   ms1.insert ( 1 );

   if ( ms1.empty( ) )
      cout << "The multiset ms1 is empty." << endl;
   else
      cout << "The multiset ms1 is not empty." << endl;

   if ( ms2.empty( ) )
      cout << "The multiset ms2 is empty." << endl;
   else
      cout << "The multiset ms2 is not empty." << endl;
}
The multiset ms1 is not empty.
The multiset ms2 is empty.

multiset:: endmultiset::end

마지막 바로 다음 반복기를 반환합니다.Returns the past-the-end iterator.

const_iterator end() const;

iterator end();

Return ValueReturn Value

마지막 바로 다음 반복기입니다.The past-the-end iterator. multiset이 비어 있으면 multiset::end() == multiset::begin()입니다.If the multiset is empty, then multiset::end() == multiset::begin().

설명Remarks

end는 반복기가 multiset의 끝을 통과했는지를 테스트하는 데 사용됩니다.end is used to test whether an iterator has passed the end of its multiset.

End 에서 반환한 값을 역참조 해서는 안 됩니다.The value returned by end shouldn't be dereferenced.

코드 예제를 보려면 multiset::find를 참조하세요.For a code example, see multiset::find.

multiset:: equal_rangemultiset::equal_range

지정된 키보다 더 큰 키를 가진 multiset의 첫 번째 요소와 지정된 키보다 더 크거나 같은 키를 가진 multiset의 첫 번째 요소에 반복기의 쌍을 각각 반환합니다.Returns a pair of iterators respectively to the first element in a multiset with a key that is greater than a specified key and to the first element in the multiset with a key that is equal to or greater than the key.

pair <const_iterator, const_iterator> equal_range (const Key& key) const;

pair <iterator, iterator> equal_range (const Key& key);

매개 변수Parameters

키인지key
검색 중인 multiset에서 요소의 정렬 키와 비교할 인수 키입니다.The argument key to be compared with the sort key of an element from the multiset being searched.

Return ValueReturn Value

반복기 쌍. 여기서 첫 번째 반복기는 키의 lower_bound이고 두 번째 반복기는 키의 upper_bound입니다.A pair of iterators such that the first is the lower_bound of the key and the second is the upper_bound of the key.

멤버 함수가 반환하는 pr 쌍의 첫 번째 반복기에 액세스하려면 pr.To access the first iterator of a pair pr returned by the member function, use pr. 먼저, 하위 바운드 반복기를 역참조 하려면 * ( pr .first, and to dereference the lower bound iterator, use *( pr. 첫 번째).first). 구성원 함수가 반환하는 pr 쌍의 두 번째 반복기에 액세스하려면 pr.To access the second iterator of a pair pr returned by the member function, use pr. 둘째, 상한 반복기를 역참조 하려면 ()를 사용 * pr 합니다.second, and to dereference the upper bound iterator, use *( pr. second).second).

예제Example

// multiset_equal_range.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   typedef multiset<int, less<int> > IntSet;
   IntSet ms1;
   multiset <int> :: const_iterator ms1_RcIter;

   ms1.insert( 10 );
   ms1.insert( 20 );
   ms1.insert( 30 );

   pair <IntSet::const_iterator, IntSet::const_iterator> p1, p2;
   p1 = ms1.equal_range( 20 );

   cout << "The upper bound of the element with "
        << "a key of 20 in the multiset ms1 is: "
        << *( p1.second ) << "." << endl;

   cout << "The lower bound of the element with "
        << "a key of 20 in the multiset ms1 is: "
        << *( p1.first ) << "." << endl;

   // Compare the upper_bound called directly
   ms1_RcIter = ms1.upper_bound( 20 );
   cout << "A direct call of upper_bound( 20 ) gives "
        << *ms1_RcIter << "," << endl
        << "matching the 2nd element of the pair"
        << " returned by equal_range( 20 )." << endl;

   p2 = ms1.equal_range( 40 );

   // If no match is found for the key,
   // both elements of the pair return end( )
   if ( ( p2.first == ms1.end( ) ) && ( p2.second == ms1.end( ) ) )
      cout << "The multiset ms1 doesn't have an element "
              << "with a key less than 40." << endl;
   else
      cout << "The element of multiset ms1 with a key >= 40 is: "
                << *( p1.first ) << "." << endl;
}
The upper bound of the element with a key of 20 in the multiset ms1 is: 30.
The lower bound of the element with a key of 20 in the multiset ms1 is: 20.
A direct call of upper_bound( 20 ) gives 30,
matching the 2nd element of the pair returned by equal_range( 20 ).
The multiset ms1 doesn't have an element with a key less than 40.

multiset:: erasemultiset::erase

지정된 위치에서 multiset의 요소 또는 요소의 범위를 제거하거나 지정된 키와 일치하는 요소를 제거합니다.Removes an element or a range of elements in a multiset from specified positions or removes elements that match a specified key.

iterator erase(
    const_iterator Where);

iterator erase(
    const_iterator First,
    const_iterator Last);

size_type erase(
    const key_type& Key);

매개 변수Parameters

위치Where
제거할 요소의 위치입니다.Position of the element to be removed.

기본First
제거할 첫 번째 요소의 위치입니다.Position of the first element to be removed.

최신Last
제거할 마지막 요소 바로 다음 위치입니다.Position just beyond the last element to be removed.

키인지Key
제거할 요소의 키 값입니다.The key value of the elements to be removed.

Return ValueReturn Value

처음 두 구성원 함수의 경우 제거된 요소 뒤에 남은 첫 번째 요소 또는 이러한 요소가 없을 경우 multiset의 끝에 있는 요소를 지정하는 양방향 반복기입니다.For the first two member functions, a bidirectional iterator that designates the first element remaining beyond any elements removed, or an element that is the end of the multiset if no such element exists.

세 번째 구성원 함수의 경우 multiset에서 제거된 요소의 수를 반환합니다.For the third member function, returns the number of elements that have been removed from the multiset.

설명Remarks

코드 예제를 보려면 set::erase를 참조하세요.For a code example, see set::erase.

multiset:: findmultiset::find

지정된 키와 같은 키를 포함하는 multiset 내 요소의 위치를 가리키는 반복기를 반환합니다.Returns an iterator that refers to the location of an element in a multiset that has a key equivalent to a specified key.

iterator find(const Key& key);

const_iterator find(const Key& key) const;

매개 변수Parameters

키인지key
검색 중인 multiset에서 요소의 정렬 키와 일치 여부를 확인할 키 값입니다.The key value to be matched by the sort key of an element from the multiset being searched.

Return ValueReturn Value

지정된 키를 포함하는 요소의 위치 또는 해당 키와 일치하는 항목이 없는 경우 multiset의 마지막 요소(multiset::end()) 다음 위치를 가리키는 반복기입니다.An iterator that refers to the location of an element with a specified key, or the location succeeding the last element in the multiset ( multiset::end()) if no match is found for the key.

설명Remarks

멤버 함수는 작음 비교 가능 보다 작음 관계를 기반으로 순서를 지정 하는 이진 조건자의 인수 와 동일한 키를 갖는 multiset의 요소를 참조 하는 반복기를 반환 합니다.The member function returns an iterator that refers to an element in the multiset whose key is equivalent to the argument key under a binary predicate that induces an ordering based on a less than comparability relation.

의 반환 값이에 find 할당 되는 경우 const_iterator multiset 개체를 수정할 수 없습니다.If the return value of find is assigned to a const_iterator, the multiset object can't be modified. 의 반환 값 find 이에 할당 되는 경우 iterator multiset 개체를 수정할 수 있습니다.If the return value of find is assigned to an iterator, the multiset object can be modified

예제Example

// compile with: /EHsc /W4 /MTd
#include <set>
#include <iostream>
#include <vector>
#include <string>

using namespace std;

template <typename T> void print_elem(const T& t) {
    cout << "(" << t << ") ";
}

template <typename T> void print_collection(const T& t) {
    cout << t.size() << " elements: ";

    for (const auto& p : t) {
        print_elem(p);
    }
    cout << endl;
}

template <typename C, class T> void findit(const C& c, T val) {
    cout << "Trying find() on value " << val << endl;
    auto result = c.find(val);
    if (result != c.end()) {
        cout << "Element found: "; print_elem(*result); cout << endl;
    } else {
        cout << "Element not found." << endl;
    }
}

int main()
{
    multiset<int> s1({ 40, 45 });
    cout << "The starting multiset s1 is: " << endl;
    print_collection(s1);

    vector<int> v;
    v.push_back(43);
    v.push_back(41);
    v.push_back(46);
    v.push_back(42);
    v.push_back(44);
    v.push_back(44); // attempt a duplicate

    cout << "Inserting the following vector data into s1: " << endl;
    print_collection(v);

    s1.insert(v.begin(), v.end());

    cout << "The modified multiset s1 is: " << endl;
    print_collection(s1);
    cout << endl;
    findit(s1, 45);
    findit(s1, 6);
}

multiset:: get_allocatormultiset::get_allocator

multiset를 생성하는 데 사용되는 할당자 개체의 복사본을 반환합니다.Returns a copy of the allocator object used to construct the multiset.

allocator_type get_allocator() const;

Return ValueReturn Value

multiset에서 사용되는 할당자입니다.The allocator used by the multiset.

설명Remarks

multiset 클래스의 할당자는 클래스가 스토리지를 관리하는 방법을 지정합니다.Allocators for the multiset class specify how the class manages storage. C++ 표준 라이브러리 컨테이너 클래스와 함께 제공되는 기본 할당자를 사용하면 대부분의 프로그래밍 요구 사항을 충족할 수 있습니다.The default allocators supplied with C++ Standard Library container classes are sufficient for most programming needs. 할당자 클래스를 직접 작성하고 사용하는 방법에 대해서는 고급 C++ 항목에서 다룹니다.Writing and using your own allocator class is an advanced C++ topic.

예제Example

// multiset_get_allocator.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   multiset <int>::allocator_type ms1_Alloc;
   multiset <int>::allocator_type ms2_Alloc;
   multiset <double>::allocator_type ms3_Alloc;
   multiset <int>::allocator_type ms4_Alloc;

   // The following lines declare objects
   // that use the default allocator.
   multiset <int> ms1;
   multiset <int, allocator<int> > ms2;
   multiset <double, allocator<double> > ms3;

   cout << "The number of integers that can be allocated"
        << endl << "before free memory is exhausted: "
        << ms2.max_size( ) << "." << endl;

   cout << "The number of doubles that can be allocated"
        << endl << "before free memory is exhausted: "
        << ms3.max_size( ) <<  "." << endl;

   // The following lines create a multiset ms4
   // with the allocator of multiset ms1
   ms1_Alloc = ms1.get_allocator( );
   multiset <int> ms4( less<int>( ), ms1_Alloc );
   ms4_Alloc = ms4.get_allocator( );

   // Two allocators are interchangeable if
   // storage allocated from each can be
   // deallocated with the other
   if( ms1_Alloc == ms4_Alloc )
   {
      cout << "Allocators are interchangeable."
           << endl;
   }
   else
   {
      cout << "Allocators are not interchangeable."
           << endl;
   }
}

multiset:: insertmultiset::insert

multiset에 요소 또는 요소의 범위를 삽입합니다.Inserts an element or a range of elements into a multiset.

// (1) single element
pair<iterator, bool> insert(
    const value_type& Val);

// (2) single element, perfect forwarded
template <class ValTy>
pair<iterator, bool>
insert(
    ValTy&& Val);

// (3) single element with hint
iterator insert(
    const_iterator Where,
    const value_type& Val);

// (4) single element, perfect forwarded, with hint
template <class ValTy>
iterator insert(
    const_iterator Where,
    ValTy&& Val);

// (5) range
template <class InputIterator>
void insert(
    InputIterator First,
    InputIterator Last);

// (6) initializer list
void insert(
    initializer_list<value_type>
IList);

매개 변수Parameters

짧은Val
multiset에 삽입할 요소의 값입니다.The value of an element to be inserted into the multiset.

위치Where
올바른 삽입 지점 검색을 시작할 위치입니다.The place to start searching for the correct point of insertion. 이 지점이 바로 앞에오면 로그 시간 대신 분할 상환 상수 시간에 삽입이 발생할 수 있습니다.(If that point immediately precedes Where, insertion can occur in amortized constant time instead of logarithmic time.)

ValTyValTy
Multiset에서 value_type요소를 생성 하는 데 사용할 수 있는 인수 형식을 지정 하 고 Val 을 인수로 사용 하는 템플릿 매개 변수입니다.Template parameter that specifies the argument type that the multiset can use to construct an element of value_type, and perfect-forwards Val as an argument.

기본First
복사할 첫 번째 요소의 위치입니다.The position of the first element to be copied.

최신Last
복사할 마지막 요소 바로 다음 위치입니다.The position just beyond the last element to be copied.

InputIteratorInputIterator
value_type 개체를 생성하는 데 사용할 수 있는 형식의 요소를 가리키는 입력 반복기의 요구 사항을 충족하는 템플릿 함수 인수입니다.Template function argument that meets the requirements of an input iterator that points to elements of a type that can be used to construct value_type objects.

IListIList
요소를 복사할 initializer_list 입니다.The initializer_list from which to copy the elements.

Return ValueReturn Value

단일 요소 삽입 멤버 함수 (1) 및 (2)는 multiset에 새 요소를 삽입한 위치로 반복기를 반환합니다.The single-element-insert member functions, (1) and (2), return an iterator to the position where the new element was inserted into the multiset.

힌트가 있는 단일 요소 멤버 함수 (3) 및 (4)는 multiset에 새 요소를 삽입한 위치를 가리키는 반복기를 반환합니다.The single-element-with-hint member functions, (3) and (4), return an iterator that points to the position where the new element was inserted into the multiset.

설명Remarks

이 함수는 어떠한 포인터 또는 참조를 무효화하지 않지만 컨테이너에 대한 모든 반복기를 무효화할 수 있습니다.No pointers or references are invalidated by this function, but it may invalidate all iterators to the container.

하나의 요소만 삽입 하는 동안 예외가 throw 되 면 컨테이너의 상태가 수정 되지 않습니다.During the insertion of just one element, if an exception is thrown, the container's state isn't modified. 여러 요소를 삽입하는 중 예외가 throw되면 컨테이너는 지정되지 않았으나 유효한 상태로 남아 있습니다.During the insertion of multiple elements, if an exception is thrown, the container is left in an unspecified but valid state.

컨테이너의 value_type은 컨테이너에 속한 형식 정의이고 set의 경우 multiset<V>::value_typeconst V입니다.The value_type of a container is a typedef that belongs to the container, and, for set, multiset<V>::value_type is type const V.

범위 멤버 함수 (5)는 [First, Last) 범위에서 반복기가 주소를 지정하는 각 요소에 해당하는 multiset에 요소 값의 시퀀스를 입력하므로 Last는 삽입되지 않습니다.The range member function (5) inserts the sequence of element values into a multiset that corresponds to each element addressed by an iterator in the range [First, Last); therefore, Last does not get inserted. 컨테이너 멤버 함수 end()는 컨테이너의 마지막 요소 바로 뒤에 있는 위치를 참조합니다. 예를 들어 s.insert(v.begin(), v.end()); 문은 v의 모든 요소를 s에 삽입합니다.The container member function end() refers to the position just after the last element in the container—for example, the statement s.insert(v.begin(), v.end()); inserts all elements of v into s.

이니셜라이저 목록 구성원 함수 (6)은 initializer_list를 사용하여 요소를 multiset로 복사합니다.The initializer list member function (6) uses an initializer_list to copy elements into the multiset.

생성된 요소를 제 위치에 삽입하려면, 즉 복사 또는 이동 작업을 수행하지 않으려면 multiset::emplacemultiset::emplace_hint를 참조하세요.For insertion of an element constructed in place—that is, no copy or move operations are performed—see multiset::emplace and multiset::emplace_hint.

예제Example

// multiset_insert.cpp
// compile with: /EHsc
#include <set>
#include <iostream>
#include <string>
#include <vector>

using namespace std;

template <typename S> void print(const S& s) {
    cout << s.size() << " elements: ";

    for (const auto& p : s) {
        cout << "(" << p << ") ";
    }

    cout << endl;
}

int main()
{

    // insert single values
    multiset<int> s1;
    // call insert(const value_type&) version
    s1.insert({ 1, 10 });
    // call insert(ValTy&&) version
    s1.insert(20);

    cout << "The original multiset values of s1 are:" << endl;
    print(s1);

    // intentionally attempt a duplicate, single element
    s1.insert(1);
    cout << "The modified multiset values of s1 are:" << endl;
    print(s1);
    cout << endl;

    // single element, with hint
    s1.insert(s1.end(), 30);
    cout << "The modified multiset values of s1 are:" << endl;
    print(s1);
    cout << endl;

    // The templatized version inserting a jumbled range
    multiset<int> s2;
    vector<int> v;
    v.push_back(43);
    v.push_back(294);
    v.push_back(41);
    v.push_back(330);
    v.push_back(42);
    v.push_back(45);

    cout << "Inserting the following vector data into s2:" << endl;
    print(v);

    s2.insert(v.begin(), v.end());

    cout << "The modified multiset values of s2 are:" << endl;
    print(s2);
    cout << endl;

    // The templatized versions move-constructing elements
    multiset<string>  s3;
    string str1("blue"), str2("green");

    // single element
    s3.insert(move(str1));
    cout << "After the first move insertion, s3 contains:" << endl;
    print(s3);

    // single element with hint
    s3.insert(s3.end(), move(str2));
    cout << "After the second move insertion, s3 contains:" << endl;
    print(s3);
    cout << endl;

    multiset<int> s4;
    // Insert the elements from an initializer_list
    s4.insert({ 4, 44, 2, 22, 3, 33, 1, 11, 5, 55 });
    cout << "After initializer_list insertion, s4 contains:" << endl;
    print(s4);
    cout << endl;
}

multiset:: iteratormultiset::iterator

multiset의 모든 요소를 읽을 수 있는 상수 양방향 반복기를 제공하는 형식입니다.A type that provides a constant bidirectional iterator that can read any element in a multiset.

typedef implementation-defined iterator;

예제Example

iterator을 선언하고 사용하는 방법에 대한 예제는 begin의 예제를 참조하세요.See the example for begin for an example of how to declare and use an iterator.

multiset:: key_compmultiset::key_comp

multiset에서 키를 정렬하기 위해 사용하는 비교 개체의 복사본을 검색합니다.Retrieves a copy of the comparison object used to order keys in a multiset.

key_compare key_comp() const;

Return ValueReturn Value

multiset가 요소의 순서를 지정하는 데 사용하는 함수 개체(템플릿 매개 변수 Compare)를 반환합니다.Returns the function object that a multiset uses to order its elements, which is the template parameter Compare.

Compare에 대한 자세한 내용은 multiset 클래스 항목의 설명 섹션을 참조하세요.For more information on Compare, see the Remarks section of the multiset Class topic.

설명Remarks

저장된 개체는 구성원 함수The stored object defines the member function:

bool operator( const Key& x, const Key& y);bool operator( const Key& x, const Key& y);

를 정의합니다. 이 함수는 정렬 순서에서 x가 엄격하게 y 앞에 오면 true를 반환합니다.which returns true if x strictly precedes y in the sort order.

Key_comparevalue_compare 는 모두 템플릿 매개 변수의 동의어입니다 Compare .Both key_compare and value_compare are synonyms for the template parameter Compare. 두 형식이 모두 동일한 클래스 집합 및 multiset에 대해 제공 됩니다. 클래스 맵 및 multimap와의 호환성을 위해 이러한 형식이 서로 다릅니다.Both types are provided for the classes set and multiset, where they're identical, for compatibility with the classes map and multimap, where they're distinct.

예제Example

// multiset_key_comp.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;

   multiset <int, less<int> > ms1;
   multiset <int, less<int> >::key_compare kc1 = ms1.key_comp( ) ;
   bool result1 = kc1( 2, 3 ) ;
   if( result1 == true )
   {
      cout << "kc1( 2,3 ) returns value of true, "
           << "where kc1 is the function object of s1."
           << endl;
   }
   else
   {
      cout << "kc1( 2,3 ) returns value of false "
           << "where kc1 is the function object of ms1."
           << endl;
   }

   multiset <int, greater<int> > ms2;
   multiset <int, greater<int> >::key_compare kc2 = ms2.key_comp( ) ;
   bool result2 = kc2( 2, 3 ) ;
   if( result2 == true )
   {
      cout << "kc2( 2,3 ) returns value of true, "
           << "where kc2 is the function object of ms2."
           << endl;
   }
   else
   {
      cout << "kc2( 2,3 ) returns value of false, "
           << "where kc2 is the function object of ms2."
           << endl;
   }
}
kc1( 2,3 ) returns value of true, where kc1 is the function object of s1.
kc2( 2,3 ) returns value of false, where kc2 is the function object of ms2.

multiset:: key_comparemultiset::key_compare

multiset의 두 요소 간 상대적 순서를 결정하는 두 정렬 키를 비교할 수 있는 함수 개체를 제공하는 형식입니다.A type that provides a function object that can compare two sort keys to determine the relative order of two elements in the multiset.

typedef Compare key_compare;

설명Remarks

key_compare는 템플릿 매개 변수 Compare의 동의어입니다.key_compare is a synonym for the template parameter Compare.

Compare에 대한 자세한 내용은 multiset 클래스 항목의 설명 섹션을 참조하세요.For more information on Compare, see the Remarks section of the multiset Class topic.

예제Example

key_compare를 선언하고 사용하는 방법에 대한 예제는 key_comp의 예제를 참조하세요.See the example for key_comp for an example of how to declare and use key_compare.

multiset:: key_typemultiset::key_type

multiset의 두 요소 간 상대적 순서를 결정하는 정렬 키를 비교할 수 있는 함수 개체를 제공하는 형식입니다.A type that provides a function object that can compare sort keys to determine the relative order of two elements in the multiset.

typedef Key key_type;

설명Remarks

key_type는 템플릿 매개 변수 Key의 동의어입니다.key_type is a synonym for the template parameter Key.

Key에 대한 자세한 내용은 multiset 클래스 항목의 설명 섹션을 참조하세요.For more information on Key, see the Remarks section of the multiset Class topic.

예제Example

key_type을 선언하고 사용하는 방법에 대한 예제는 value_type의 예제를 참조하세요.See the example for value_type for an example of how to declare and use key_type.

multiset:: lower_boundmultiset::lower_bound

multiset에서 지정된 키보다 크거나 같은 키를 가진 첫 번째 요소에 반복기를 반환합니다.Returns an iterator to the first element in a multiset with a key that is equal to or greater than a specified key.

const_iterator lower_bound(const Key& key) const;

iterator lower_bound(const Key& key);

매개 변수Parameters

키인지key
검색 중인 multiset에서 요소의 정렬 키와 비교할 인수 키입니다.The argument key to be compared with the sort key of an element from the multiset being searched.

Return ValueReturn Value

iterator const_iterator 인수 키 보다 크거나 같은 키를 포함 하는 multiset 내 요소의 위치 주소를 가져오거나, 키와 일치 하는 항목이 없는 경우 multiset에서 마지막 요소 다음 위치의 주소를 나타내는 또는입니다.An iterator or const_iterator that addresses the location of an element in a multiset that with a key that is equal to or greater than the argument key, or that addresses the location succeeding the last element in the multiset if no match is found for the key.

예제Example

// multiset_lower_bound.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   multiset <int> ms1;
   multiset <int> :: const_iterator ms1_AcIter, ms1_RcIter;

   ms1.insert( 10 );
   ms1.insert( 20 );
   ms1.insert( 30 );

   ms1_RcIter = ms1.lower_bound( 20 );
   cout << "The element of multiset ms1 with a key of 20 is: "
        << *ms1_RcIter << "." << endl;

   ms1_RcIter = ms1.lower_bound( 40 );

   // If no match is found for the key, end( ) is returned
   if ( ms1_RcIter == ms1.end( ) )
      cout << "The multiset ms1 doesn't have an element "
           << "with a key of 40." << endl;
   else
      cout << "The element of multiset ms1 with a key of 40 is: "
           << *ms1_RcIter << "." << endl;

   // The element at a specific location in the multiset can be
   // found using a dereferenced iterator addressing the location
   ms1_AcIter = ms1.end( );
   ms1_AcIter--;
   ms1_RcIter = ms1.lower_bound( *ms1_AcIter );
   cout << "The element of ms1 with a key matching "
        << "that of the last element is: "
        << *ms1_RcIter << "." << endl;
}
The element of multiset ms1 with a key of 20 is: 20.
The multiset ms1 doesn't have an element with a key of 40.
The element of ms1 with a key matching that of the last element is: 30.

multiset:: max_sizemultiset::max_size

multiset의 최대 길이를 반환합니다.Returns the maximum length of the multiset.

size_type max_size() const;

Return ValueReturn Value

multiset의 최대 허용 길이입니다.The maximum possible length of the multiset.

예제Example

// multiset_max_size.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   multiset <int> ms1;
   multiset <int>::size_type i;

   i = ms1.max_size( );
   cout << "The maximum possible length "
        << "of the multiset is " << i << "." << endl;
}

multiset:: multisetmultiset::multiset

비어 있거나 다른 multiset의 전체 또는 일부분에 대한 복사본인 multiset를 생성합니다.Constructs a multiset that is empty or that is a copy of all or part of some other multiset.

multiset();

explicit multiset (
    const Compare& Comp);

multiset (
    const Compare& Comp,
    const Allocator& Al);

multiset(
    const multiset& Right);

multiset(
    multiset&& Right);

multiset(
    initializer_list<Type> IList);

multiset(
    initializer_list<Type> IList,
    const Compare& Comp);

multiset(
    initializer_list<Type> IList,
    const Compare& Comp,
    const Allocator& Al);

template <class InputIterator>
multiset (
    InputIterator First,
    InputIterator Last);

template <class InputIterator>
multiset (
    InputIterator First,
    InputIterator Last,
    const Compare& Comp);

template <class InputIterator>
multiset (
    InputIterator First,
    InputIterator Last,
    const Compare& Comp,
    const Allocator& Al);

매개 변수Parameters

항상Al
이 multiset 개체에 사용할 스토리지 할당자 클래스로, 기본값은 Allocator입니다.The storage allocator class to be used for this multiset object, which defaults to Allocator.

생략Comp
multiset의 요소 순서를 지정하는 데 사용되는 const Compare 형식의 비교 함수로, 기본값은 Compare입니다.The comparison function of type const Compare used to order the elements in the multiset, which defaults to Compare.

오른쪽Right
생성된 multiset가 복사본으로 지정될 multiset입니다.The multiset of which the constructed multiset is to be a copy.

기본First
복사할 요소의 범위에서 첫 번째 요소의 위치입니다.The position of the first element in the range of elements to be copied.

최신Last
복사할 요소의 범위를 벗어나는 첫 번째 요소의 위치입니다.The position of the first element beyond the range of elements to be copied.

IListIList
요소를 복사해올 initializer_list입니다.The initializer_list from which to copy the elements.

설명Remarks

모든 생성자는 multiset의 메모리 스토리지를 관리하며 나중에 get_allocator를 호출하여 반환할 수 있는 할당자 개체 형식을 저장합니다.All constructors store a type of allocator object that manages memory storage for the multiset and that can later be returned by calling get_allocator. allocator 매개 변수는 대체 할당자를 대체하는 데 사용되는 전처리 매크로 및 클래스 선언에서 생략되는 경우가 많습니다.The allocator parameter is often omitted in the class declarations and preprocessing macros used to substitute alternative allocators.

모든 생성자는 해당 multiset를 초기화합니다.All constructors initialize their multiset.

모든 생성자는 multiset의 키 간 순서를 설정하는 데 사용되며 나중에 key_comp를 호출하여 반환할 수 있는 Compare 형식의 함수 개체를 저장합니다.All constructors store a function object of type Compare that is used to establish an order among the keys of the multiset and that can later be returned by calling key_comp.

처음 세 생성자는 빈 초기 multiset를 지정 하 고, 두 번째 생성자는 요소의 순서를 설정 하는 데 사용할 비교 함수 (Comp)의 형식을 지정 하며, 세 번째 생성자는 사용할 할당자 형식 (Al)을 명시적으로 지정 합니다.The first three constructors specify an empty initial multiset, the second specifying the type of comparison function (Comp) to be used in establishing the order of the elements and the third explicitly specifying the allocator type (Al) to be used. 키워드는 explicit 특정 종류의 자동 형식 변환을 표시 하지 않습니다.The keyword explicit suppresses certain kinds of automatic type conversion.

네 번째 생성자는 multiset 오른쪽의 복사본을 지정 합니다.The fourth constructor specifies a copy of the multiset Right.

다섯 번째 생성자는 Right를 이동 하 여 multiset의 복사본을 지정 합니다.The fifth constructor specifies a copy of the multiset by moving Right.

6 번째, 7 번째 및 8 번째 생성자는 요소를 복사할 initializer_list를 지정 합니다.The 6th, 7th, and 8th constructors specify an initializer_list from which to copy the elements.

다음 3개 생성자는 multiset의 범위 [First, Last)를 복사하며, 비교 함수 및 할당자 형식을 지정하는 명시도는 계속 높아집니다.The next three constructors copy the range [First, Last) of a multiset with increasing explicitness in specifying the type of comparison function and allocator.

예제Example

// multiset_ctor.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main()
{
    using namespace std;
    //multiset <int>::iterator ms1_Iter, ms2_Iter, ms3_Iter;
    multiset <int>::iterator ms4_Iter, ms5_Iter, ms6_Iter, ms7_Iter;

    // Create an empty multiset ms0 of key type integer
    multiset <int> ms0;

    // Create an empty multiset ms1 with the key comparison
    // function of less than, then insert 4 elements
    multiset <int, less<int> > ms1;
    ms1.insert(10);
    ms1.insert(20);
    ms1.insert(20);
    ms1.insert(40);

    // Create an empty multiset ms2 with the key comparison
    // function of greater than, then insert 2 elements
    multiset <int, less<int> > ms2;
    ms2.insert(10);
    ms2.insert(20);

    // Create a multiset ms3 with the
    // allocator of multiset ms1
    multiset <int>::allocator_type ms1_Alloc;
    ms1_Alloc = ms1.get_allocator();
    multiset <int> ms3(less<int>(), ms1_Alloc);
    ms3.insert(30);

    // Create a copy, multiset ms4, of multiset ms1
    multiset <int> ms4(ms1);

    // Create a multiset ms5 by copying the range ms1[ first,  last)
    multiset <int>::const_iterator ms1_bcIter, ms1_ecIter;
    ms1_bcIter = ms1.begin();
    ms1_ecIter = ms1.begin();
    ms1_ecIter++;
    ms1_ecIter++;
    multiset <int> ms5(ms1_bcIter, ms1_ecIter);

    // Create a multiset ms6 by copying the range ms4[ first,  last)
    // and with the allocator of multiset ms2
    multiset <int>::allocator_type ms2_Alloc;
    ms2_Alloc = ms2.get_allocator();
    multiset <int> ms6(ms4.begin(), ++ms4.begin(), less<int>(), ms2_Alloc);

    cout << "ms1 =";
    for (auto i : ms1)
        cout << " " << i;
    cout << endl;

    cout << "ms2 =";
    for (auto i : ms2)
        cout << " " << i;
   cout << endl;

   cout << "ms3 =";
   for (auto i : ms3)
       cout << " " << i;
    cout << endl;

    cout << "ms4 =";
    for (auto i : ms4)
        cout << " " << i;
    cout << endl;

    cout << "ms5 =";
    for (auto i : ms5)
        cout << " " << i;
    cout << endl;

    cout << "ms6 =";
    for (auto i : ms6)
        cout << " " << i;
    cout << endl;

    // Create a multiset by moving ms5
    multiset<int> ms7(move(ms5));
    cout << "ms7 =";
    for (auto i : ms7)
        cout << " " << i;
    cout << endl;

    // Create a multiset with an initializer_list
    multiset<int> ms8({1, 2, 3, 4});
    cout << "ms8=";
    for (auto i : ms8)
        cout << " " << i;
    cout << endl;
}

multiset:: operator =multiset::operator=

다른 multiset의 요소를 사용하여 이 multiset의 요소를 대체합니다.Replaces the elements of this multiset using elements from another multiset.

multiset& operator=(const multiset& right);

multiset& operator=(multiset&& right);

매개 변수Parameters

오른쪽right
요소를 복사하거나 이동하는 원본 multiset입니다.The multiset from which elements are copied or moved.

설명Remarks

operator=right multiset 사용 된 참조 형식 (lvalue 또는 rvalue)에 따라 오른쪽의 요소를이에 복사 하거나 이동 합니다.operator= copies or moves the elements in right into this multiset, depending on the reference type (lvalue or rvalue) used. operator=가 실행되기 전에 이 multiset에 있는 요소가 삭제됩니다.Elements that are in this multiset before operator= executes are discarded.

예제Example

// multiset_operator_as.cpp
// compile with: /EHsc
#include <multiset>
#include <iostream>

int main( )
   {
   using namespace std;
   multiset<int> v1, v2, v3;
   multiset<int>::iterator iter;

   v1.insert(10);

   cout << "v1 = " ;
   for (iter = v1.begin(); iter != v1.end(); iter++)
      cout << *iter << " ";
   cout << endl;

   v2 = v1;
   cout << "v2 = ";
   for (iter = v2.begin(); iter != v2.end(); iter++)
      cout << *iter << " ";
   cout << endl;

// move v1 into v2
   v2.clear();
   v2 = move(v1);
   cout << "v2 = ";
   for (iter = v2.begin(); iter != v2.end(); iter++)
      cout << *iter << " ";
   cout << endl;
   }

multiset::pmultiset::pointer

multiset에서 요소에 대한 포인터를 제공하는 형식입니다.A type that provides a pointer to an element in a multiset.

typedef typename allocator_type::pointer pointer;

설명Remarks

pointer 형식은 요소값을 수정할 때 사용할 수 있습니다.A type pointer can be used to modify the value of an element.

대부분의 경우 iterator를 사용하여 multiset 개체의 요소에 액세스해야 합니다.In most cases, an iterator should be used to access the elements in a multiset object.

multiset:: rbeginmultiset::rbegin

반전된 multiset에서 첫 번째 요소를 주소 지정하는 반복기를 반환합니다.Returns an iterator addressing the first element in a reversed multiset.

const_reverse_iterator rbegin() const;

reverse_iterator rbegin();

Return ValueReturn Value

반전된 multiset의 첫 번째 요소에 대한 주소를 지정하거나, 반전 해제된 multiset의 마지막 요소에 대한 주소를 지정하는 역방향 양방향 반복기입니다.A reverse bidirectional iterator addressing the first element in a reversed multiset or addressing what had been the last element in the unreversed multiset.

설명Remarks

rbegin은 multiset에서 rbegin이 사용되는 것처럼 역방향 multiset에 사용됩니다.rbegin is used with a reversed multiset just as rbegin is used with a multiset.

의 반환 값이에 할당 된 경우에는 rbegin const_reverse_iterator multiset 개체를 수정할 수 없습니다.If the return value of rbegin is assigned to a const_reverse_iterator, then the multiset object can't be modified. rbegin의 반환 값이 reverse_iterator에 할당되는 경우에는 multiset 개체를 수정할 수 있습니다.If the return value of rbegin is assigned to a reverse_iterator, then the multiset object can be modified.

rbegin은 multiset를 역방향으로 반복할 때 사용할 수 있습니다.rbegin can be used to iterate through a multiset backwards.

예제Example

// multiset_rbegin.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   multiset <int> ms1;
   multiset <int>::iterator ms1_Iter;
   multiset <int>::reverse_iterator ms1_rIter;

   ms1.insert( 10 );
   ms1.insert( 20 );
   ms1.insert( 30 );

   ms1_rIter = ms1.rbegin( );
   cout << "The first element in the reversed multiset is "
        << *ms1_rIter << "." << endl;

   // begin can be used to start an iteration
   // through a multiset in a forward order
   cout << "The multiset is:";
   for ( ms1_Iter = ms1.begin( ) ; ms1_Iter != ms1.end( ); ms1_Iter++ )
      cout << " " << *ms1_Iter;
   cout << endl;

   // rbegin can be used to start an iteration
   // through a multiset in a reverse order
   cout << "The reversed multiset is:";
   for ( ms1_rIter = ms1.rbegin( ) ; ms1_rIter != ms1.rend( ); ms1_rIter++ )
      cout << " " << *ms1_rIter;
   cout << endl;

   // A multiset element can be erased by dereferencing to its key
   ms1_rIter = ms1.rbegin( );
   ms1.erase ( *ms1_rIter );

   ms1_rIter = ms1.rbegin( );
   cout << "After the erasure, the first element "
        << "in the reversed multiset is "<< *ms1_rIter << "."
        << endl;
}
The first element in the reversed multiset is 30.
The multiset is: 10 20 30
The reversed multiset is: 30 20 10
After the erasure, the first element in the reversed multiset is 20.

multiset:: referencemultiset::reference

multiset에 저장된 요소에 대한 참조를 제공하는 형식입니다.A type that provides a reference to an element stored in a multiset.

typedef typename allocator_type::reference reference;

예제Example

// multiset_ref.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   multiset <int> ms1;

   ms1.insert( 10 );
   ms1.insert( 20 );

   // Declare and initialize a reference &Ref1 to the 1st element
   const int &Ref1 = *ms1.begin( );

   cout << "The first element in the multiset is "
        << Ref1 << "." << endl;
}
The first element in the multiset is 10.

multiset:: rendmultiset::rend

역방향 multiset에서 마지막 요소 다음에 나오는 위치의 주소를 지정하는 반복기를 반환합니다.Returns an iterator that addresses the location succeeding the last element in a reversed multiset.

const_reverse_iterator rend() const;

reverse_iterator rend();

Return ValueReturn Value

역방향 multiset에서 마지막 요소 다음의 위치(정방향 multiset의 첫 번째 요소 앞의 위치) 주소를 지정하는 역방향 양방향 반복기입니다.A reverse bidirectional iterator that addresses the location succeeding the last element in a reversed multiset (the location that had preceded the first element in the unreversed multiset).

설명Remarks

rend는 multiset에서 end가 사용되는 것처럼 역방향 multiset에 사용됩니다.rend is used with a reversed multiset just as end is used with a multiset.

의 반환 값이에 할당 된 경우에는 rend const_reverse_iterator multiset 개체를 수정할 수 없습니다.If the return value of rend is assigned to a const_reverse_iterator, then the multiset object can't be modified. rend의 반환 값이 reverse_iterator에 할당되는 경우에는 multiset 개체를 수정할 수 있습니다.If the return value of rend is assigned to a reverse_iterator, then the multiset object can be modified.

rend를 사용하여 역방향 반복기가 multiset 끝에 도달했는지를 테스트할 수 있습니다.rend can be used to test to whether a reverse iterator has reached the end of its multiset.

에서 반환 된 값은 rend 역참조 되지 않아야 합니다.The value returned by rend shouldn't be dereferenced.

예제Example

// multiset_rend.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main() {
   using namespace std;
   multiset <int> ms1;
   multiset <int>::iterator ms1_Iter;
   multiset <int>::reverse_iterator ms1_rIter;
   multiset <int>::const_reverse_iterator ms1_crIter;

   ms1.insert( 10 );
   ms1.insert( 20 );
   ms1.insert( 30 );

   ms1_rIter = ms1.rend( ) ;
   ms1_rIter--;
   cout << "The last element in the reversed multiset is "
        << *ms1_rIter << "." << endl;

   // end can be used to terminate an iteration
   // through a multiset in a forward order
   cout << "The multiset is: ";
   for ( ms1_Iter = ms1.begin( ) ; ms1_Iter != ms1.end( ); ms1_Iter++ )
      cout << *ms1_Iter << " ";
   cout << "." << endl;

   // rend can be used to terminate an iteration
   // through a multiset in a reverse order
   cout << "The reversed multiset is: ";
   for ( ms1_rIter = ms1.rbegin( ) ; ms1_rIter != ms1.rend( ); ms1_rIter++ )
      cout << *ms1_rIter << " ";
   cout << "." << endl;

   ms1_rIter = ms1.rend( );
   ms1_rIter--;
   ms1.erase ( *ms1_rIter );

   ms1_rIter = ms1.rend( );
   --ms1_rIter;
   cout << "After the erasure, the last element in the "
        << "reversed multiset is " << *ms1_rIter << "." << endl;
}

multiset:: reverse_iteratormultiset::reverse_iterator

역방향 multiset의 요소를 읽거나 수정할 수 있는 양방향 반복기를 제공하는 형식입니다.A type that provides a bidirectional iterator that can read or modify an element in a reversed multiset.

typedef std::reverse_iterator<iterator> reverse_iterator;

설명Remarks

형식은 reverse_iterator multiset를 역방향으로 반복 하는 데 사용 됩니다.A type reverse_iterator is used to iterate through the multiset in reverse.

예제Example

reverse_iterator를 선언하고 사용하는 방법에 대한 예제는 rbegin의 예제를 참조하세요.See example for rbegin for an example of how to declare and use reverse_iterator.

multiset:: sizemultiset::size

multiset에 있는 요소 수를 반환합니다.Returns the number of elements in the multiset.

size_type size() const;

Return ValueReturn Value

multiset의 현재 길이입니다.The current length of the multiset.

예제Example

// multiset_size.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   multiset <int> ms1;
   multiset <int> :: size_type i;

   ms1.insert( 1 );
   i = ms1.size( );
   cout << "The multiset length is " << i << "." << endl;

   ms1.insert( 2 );
   i = ms1.size( );
   cout << "The multiset length is now " << i << "." << endl;
}
The multiset length is 1.
The multiset length is now 2.

multiset:: size_typemultiset::size_type

multiset에서 요소 수를 표현할 수 있는 부호 없는 정수 형식입니다.An unsigned integer type that can represent the number of elements in a multiset.

typedef typename allocator_type::size_type size_type;

예제Example

size_type을 선언하고 사용하는 방법에 대한 예제는 size의 예제를 참조하세요.See example for size for an example of how to declare and use size_type

multiset:: swapmultiset::swap

두 multiset의 요소를 교환합니다.Exchanges the elements of two multisets.

void swap(
    multiset<Key, Compare, Allocator>& right);

매개 변수Parameters

오른쪽right
대상 multiset와 교환할 요소를 제공하는 인수 집합입니다.The argument multiset providing the elements to be swapped with the target multiset.

설명Remarks

구성원 함수는 해당 요소를 교환할 두 multiset의 요소를 지정하는 참조, 포인터 또는 반복기를 무효화하지 않습니다.The member function invalidates no references, pointers, or iterators that designate elements in the two multisets whose elements are being exchanged.

예제Example

// multiset_swap.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   multiset <int> ms1, ms2, ms3;
   multiset <int>::iterator ms1_Iter;

   ms1.insert( 10 );
   ms1.insert( 20 );
   ms1.insert( 30 );
   ms2.insert( 100 );
   ms2.insert( 200 );
   ms3.insert( 300 );

   cout << "The original multiset ms1 is:";
   for ( ms1_Iter = ms1.begin( ); ms1_Iter != ms1.end( ); ms1_Iter++ )
      cout << " " << *ms1_Iter;
   cout << "." << endl;

   // This is the member function version of swap
   ms1.swap( ms2 );

   cout << "After swapping with ms2, list ms1 is:";
   for ( ms1_Iter = ms1.begin( ); ms1_Iter != ms1.end( ); ms1_Iter++ )
      cout << " " << *ms1_Iter;
   cout << "." << endl;

   // This is the specialized template version of swap
   swap( ms1, ms3 );

   cout << "After swapping with ms3, list ms1 is:";
   for ( ms1_Iter = ms1.begin( ); ms1_Iter != ms1.end( ); ms1_Iter++ )
      cout << " " << *ms1_Iter;
   cout   << "." << endl;
}
The original multiset ms1 is: 10 20 30.
After swapping with ms2, list ms1 is: 100 200.
After swapping with ms3, list ms1 is: 300.

multiset:: upper_boundmultiset::upper_bound

multiset에 지정된 키보다 큰 키를 가진 첫 번째 요소에 반복기를 반환합니다.Returns an iterator to the first element in a multiset with a key that is greater than a specified key.

const_iterator upper_bound(const Key& key) const;

iterator upper_bound(const Key& key);

매개 변수Parameters

키인지key
검색 중인 multiset에서 요소의 정렬 키와 비교할 인수 키입니다.The argument key to be compared with the sort key of an element from the multiset being searched.

Return ValueReturn Value

인수 키보다 큰 키가 들어 있는 multiset 내 요소의 위치 주소를 지정하거나, 키와 일치하는 항목이 없는 경우 multiset에서 마지막 요소 다음 위치의 주소를 지정하는 반복기 또는 const_iterator입니다.An iterator or const_iterator that addresses the location of an element in a multiset with a key that is greater than the argument key, or that addresses the location succeeding the last element in the multiset if no match is found for the key.

예제Example

// multiset_upper_bound.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   multiset <int> ms1;
   multiset <int> :: const_iterator ms1_AcIter, ms1_RcIter;

   ms1.insert( 10 );
   ms1.insert( 20 );
   ms1.insert( 30 );

   ms1_RcIter = ms1.upper_bound( 20 );
   cout << "The first element of multiset ms1 with a key greater "
           << "than 20 is: " << *ms1_RcIter << "." << endl;

   ms1_RcIter = ms1.upper_bound( 30 );

   // If no match is found for the key, end( ) is returned
   if ( ms1_RcIter == ms1.end( ) )
      cout << "The multiset ms1 doesn't have an element "
              << "with a key greater than 30." << endl;
   else
      cout << "The element of multiset ms1 with a key > 40 is: "
           << *ms1_RcIter << "." << endl;

   // The element at a specific location in the multiset can be
   // found using a dereferenced iterator addressing the location
   ms1_AcIter = ms1.begin( );
   ms1_RcIter = ms1.upper_bound( *ms1_AcIter );
   cout << "The first element of ms1 with a key greater than"
        << endl << "that of the initial element of ms1 is: "
        << *ms1_RcIter << "." << endl;
}
The first element of multiset ms1 with a key greater than 20 is: 30.
The multiset ms1 doesn't have an element with a key greater than 30.
The first element of ms1 with a key greater than
that of the initial element of ms1 is: 20.

multiset:: value_compmultiset::value_comp

multiset에서 요소값의 정렬에 사용되는 비교 개체의 복사본을 검색합니다.Retrieves a copy of the comparison object used to order element values in a multiset.

value_compare value_comp() const;

Return ValueReturn Value

multiset가 요소의 순서를 지정하는 데 사용하는 함수 개체(템플릿 매개 변수 Compare)를 반환합니다.Returns the function object that a multiset uses to order its elements, which is the template parameter Compare.

Compare에 대한 자세한 내용은 multiset 클래스 항목의 설명 섹션을 참조하세요.For more information on Compare, see the Remarks section of the multiset Class topic.

설명Remarks

저장된 개체는 구성원 함수The stored object defines the member function:

bool operator( const key& _xVal , const key& _yVal );bool operator( const Key&_xVal, const Key&_yVal);

이는 _xVal 가 정렬 순서에서 앞에와 같지 않은 경우 true를 반환 _yVal 합니다.which returns true if _xVal precedes and isn't equal to _yVal in the sort order.

Key_comparevalue_compare 는 모두 템플릿 매개 변수의 동의어입니다 Compare .Both key_compare and value_compare are synonyms for the template parameter Compare. 두 형식이 모두 동일한 클래스 집합 및 multiset에 대해 제공 됩니다. 클래스 맵 및 multimap와의 호환성을 위해 이러한 형식이 서로 다릅니다.Both types are provided for the classes set and multiset, where they're identical, for compatibility with the classes map and multimap, where they're distinct.

예제Example

// multiset_value_comp.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;

   multiset <int, less<int> > ms1;
   multiset <int, less<int> >::value_compare vc1 = ms1.value_comp( );
   bool result1 = vc1( 2, 3 );
   if( result1 == true )
   {
      cout << "vc1( 2,3 ) returns value of true, "
           << "where vc1 is the function object of ms1."
           << endl;
   }
   else
   {
      cout << "vc1( 2,3 ) returns value of false, "
           << "where vc1 is the function object of ms1."
           << endl;
   }

   set <int, greater<int> > ms2;
   set<int, greater<int> >::value_compare vc2 = ms2.value_comp( );
   bool result2 = vc2( 2, 3 );
   if( result2 == true )
   {
      cout << "vc2( 2,3 ) returns value of true, "
           << "where vc2 is the function object of ms2."
           << endl;
   }
   else
   {
      cout << "vc2( 2,3 ) returns value of false, "
           << "where vc2 is the function object of ms2."
           << endl;
   }
}
vc1( 2,3 ) returns value of true, where vc1 is the function object of ms1.
vc2( 2,3 ) returns value of false, where vc2 is the function object of ms2.

multiset:: value_comparemultiset::value_compare

두 요소를 정렬 키로 비교하여 multiset에서 상대적 순서를 결정할 수 있는 함수 개체를 제공하는 형식입니다.The type that provides a function object that can compare two sort keys to determine their relative order in the multiset.

typedef key_compare value_compare;

설명Remarks

value_compare는 템플릿 매개 변수 Compare의 동의어입니다.value_compare is a synonym for the template parameter Compare.

Key_comparevalue_compare 는 모두 템플릿 매개 변수의 동의어입니다 Compare .Both key_compare and value_compare are synonyms for the template parameter Compare. 두 형식이 모두 동일한 클래스 집합 및 multiset에 대해 제공 됩니다. 클래스 맵 및 multimap와의 호환성을 위해 이러한 형식이 서로 다릅니다.Both types are provided for the classes set and multiset, where they're identical, for compatibility with the classes map and multimap, where they're distinct.

Compare에 대한 자세한 내용은 multiset 클래스 항목의 설명 섹션을 참조하세요.For more information on Compare, see the Remarks section of the multiset Class topic.

예제Example

value_compare를 선언하고 사용하는 방법의 예제는 value_comp의 예제를 참조하세요.See the example for value_comp for an example of how to declare and use value_compare.

multiset:: value_typemultiset::value_type

해당 용량 내에서 multiset의 요소로 저장된 개체를 값으로 설명하는 형식입니다.A type that describes an object stored as an element as a multiset in its capacity as a value.

typedef Key value_type;

설명Remarks

value_type는 템플릿 매개 변수 Key의 동의어입니다.value_type is a synonym for the template parameter Key.

Key_typevalue_type 는 모두 템플릿 매개 변수의 동의어입니다 Key .Both key_type and value_type are synonyms for the template parameter Key. 두 형식이 모두 동일한 클래스 집합 및 multiset에 대해 제공 됩니다. 클래스 맵 및 multimap와의 호환성을 위해 이러한 형식이 서로 다릅니다.Both types are provided for the classes set and multiset, where they're identical, for compatibility with the classes map and multimap, where they're distinct.

Key에 대한 자세한 내용은 이 항목의 설명 섹션을 참조하세요.For more information on Key, see the Remarks section of the topic.

예제Example

// multiset_value_type.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   multiset <int> ms1;
   multiset <int>::iterator ms1_Iter;

   multiset <int> :: value_type svt_Int;   // Declare value_type
   svt_Int = 10;             // Initialize value_type

   multiset <int> :: key_type skt_Int;   // Declare key_type
   skt_Int = 20;             // Initialize key_type

   ms1.insert( svt_Int );         // Insert value into s1
   ms1.insert( skt_Int );         // Insert key into s1

   // A multiset accepts key_types or value_types as elements
   cout << "The multiset has elements:";
   for ( ms1_Iter = ms1.begin( ) ; ms1_Iter != ms1.end( ); ms1_Iter++ )
      cout << " " << *ms1_Iter;
   cout << "." << endl;
}
The multiset has elements: 10 20.

참고 항목See also

컨테이너가Containers
C + + 표준 라이브러리의 스레드 보안Thread Safety in the C++ Standard Library
C + + 표준 라이브러리 참조C++ Standard Library Reference