The associative containers define three versions of erase
, which are described in Table 11.5. As with the sequential containers, we can erase
one element or a range of elements by passing erase
an iterator or an iterator pair. These versions of erase
are similar to the corresponding operations on sequential containers: The indicated element(s) are removed and the function returns void
.
The associative containers supply an additional erase
operation that takes a key_type
argument. This version removes all the elements, if any, with the given key and returns a count of how many elements were removed. We can use this version to remove a specific word from word_count
before printing the results:
// erase on a key returns the number of elements removed
if (word_count.erase(removal_word))
cout << "ok: " << removal_word << " removed
";
else cout << "oops: " << removal_word << " not found!
";
For the containers with unique keys, the return from erase
is always either zero or one. If the return value is zero, then the element we wanted to erase was not in the container.
For types that allow multiple keys, the number of elements removed could be greater than one:
auto cnt = authors.erase("Barth, John");
If authors
is the multimap
we created in § 11.3.2 (p. 434), then cnt
will be 2.