# C++ multiset erase()

C++ Multimultiset erase() function is used to remove either a single element associated with given key or a range of elements ([first, last)) from the multiset container. Hence, the size will be reduced by the number of elements removed.

## Parameter

position: Iterator pointing to an element to be removed from the container.

val: Value to be removed from the multiset.

first: Beginning of the range to erase.

last: End of the range to erase.

## Return value

The erase() function returns an iterator that point to the next element of the deleted element or returns the number of deleted elements.

## Complexity

erase(position): Amortized constant.

erase (val): Logarithmic in container size.

erase(first,last): Linear in the distance between first and last of the container.

## Iterator validity

Iterators, references and the pointers pointing to elements removed by the function are invalidated.All other iterators, pointers and references keep their validity.

## Data Races

The container is modified.

The elements removed are modified. Iterating ranges in the container is not safe although concurrently accessing other elements is safe.

## Exception Safety

This function does not throw exception.

If an invalid range or position is specified, it causes undefined behavior.

## Example 1

Let's see the simple example to erase the element by the iterator.

Output:

```Before erasing the element:
10
20
20
30

After erasing the element:
10
20
20
30
```

In the above example, element is erased by the iterator 'it'.

## Example 2

Let's see a simple example to erase the element of the multiset with the given key value:

Output:

```Before erasing the element:
10
10
20
30
30
40

After erasing the element:
10
10
20
40
```

In the above example, erase(value) function uses the value 30 from the multiset.

## Example 3

Let's see a simple example to erase the element by the given range:

Output:

```Before erasing the element are:
Size is: 3
10
20
30

After erasing the element are:
Size is: 0
```

In the above example, erase(first, last) function is used to erase the element with the given range i.e. begin to end.

## Example 4

Let's see a simple example to erase all the odd numbers from the multiset:

Output:

```After erasing odd numbers, elements are:
2, 4, 4, 6, 8, 10, 10, 12,
```

In the above example, all the odd numbers has been erased and displaying even numbers.

## Example 5

Let's see another example:

Output:

```Starting data of multiset s1 is:
[Bob] [Bob] [Rob] [Rob] [Robert]
size() == 5

After the 2nd element is deleted, the multiset s1 is:
[Bob] [Rob] [Rob] [Robert]
size() == 4

Starting data of multiset s2 is:
[growl] [meow] [nikita] [nikita] [yellow]
size() == 5

After the middle elements are deleted, the multiset s2 is:
[growl] [yellow]
size() == 2

Starting data of multiset s3 is:
[B] [C] [C#] [D] [D#] [E] [E] [E#] [E#] [F] [F#] [G] [G#]
size() == 13

The number of elements removed from s3 is: 2.
After the element with a key of "E#" is deleted, the multiset s3 is:
[B] [C] [C#] [D] [D#] [E] [E] [F] [F#] [G] [G#]
size() == 11
```
Next TopicC++ multiset    