public member type
<unordered_set>

std::unordered_multiset::cend

container iterator (1)
const_iterator cend() const noexcept;
bucket iterator (2)
const_local_iterator cend ( size_type n ) const;
Return const_iterator to end
Returns a const_iterator pointing to the past-the-end element in the unordered_multiset container (1) or in one of its buckets (2).

The const_iterator returned by cend does not point to any element, but to the position that follows the last element in the unordered_multiset container or in one of its buckets (i.e., their past-the-end position). Thus, the value returned shall not be dereferenced - it is generally used to describe the open-end of a range, such as [cbegin,cend).

Notice that an unordered_multiset object makes no guarantees on which order its elements follow. But, in any case, the range that goes from its cbegin to its cend covers all the elements in the container (or the bucket), until invalidated.

A const_iterator is an iterator that points to const content. This iterator can be increased and decreased (unless it is itself also const), but it cannot be used to modify the contents it points to.

Parameters

n
Bucket number. This shall be lower than bucket_count.
It is an optional parameter that changes the behavior of this member function: if set, the const_iterator retrieved points to the past-the-end element of a bucket, otherwise it points to the past-the-end element of the container.
Member type size_type is an unsigned integral type.

Return Value

A const_iterator to the element past the end of the container (2) or the bucket (2).

Both const_iterator and const_local_iterator are member types. In the unordered_multiset class template, these are forward iterator types.
They may both be aliases of the same iterator type.

Example

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
// unordered_multiset::cbegin/cend example
#include <iostream>
#include <string>
#include <unordered_set>

int main ()
{
  std::unordered_multiset<std::string> myums =
    {"father","mother","son","daughter","son","son"};

  std::cout << "myums contains:";
  for ( auto it = myums.begin(); it != myums.end(); ++it )
    std::cout << " " << *it;    // cannot modify *it
  std::cout << std::endl;

  std::cout << "myums's buckets contain:\n";
  for ( unsigned i = 0; i < myums.bucket_count(); ++i) {
    std::cout << "bucket #" << i << " contains:";
    for ( auto local_it = myums.begin(i); local_it!= myums.end(i); ++local_it )
      std::cout << " " << *local_it;
    std::cout << std::endl;
  }

  return 0;
}


Possible output:
myums contains: father mother daughter son son son
myset's buckets contain:
bucket #0 contains:
bucket #1 contains: father
bucket #2 contains: mother
bucket #3 contains: daughter son son son
bucket #4 contains: 
bucket #5 contains: 
bucket #6 contains: 

Complexity

Constant.

Iterator validity

No changes.

See also

  • 9316991614 2018-02-25
  • 191841613 2018-02-25
  • 16411612 2018-02-25
  • 6081981611 2018-02-25
  • 1784561610 2018-02-25
  • 4651609 2018-02-25
  • 9348111608 2018-02-25
  • 2513771607 2018-02-25
  • 6478461606 2018-02-24
  • 4985791605 2018-02-24
  • 5637141604 2018-02-24
  • 282181603 2018-02-24
  • 6217941602 2018-02-24
  • 5076141601 2018-02-24
  • 714281600 2018-02-24
  • 6607141599 2018-02-24
  • 949041598 2018-02-24
  • 6809961597 2018-02-24
  • 671871596 2018-02-24
  • 7107821595 2018-02-24