Контейнер multiset

Контейнер multiset (он также определен в заголовочном файле set) реализует упорядоченное множество, которое может содержать несколько равных друг другу элементов.

Во многом этот контейнер похож на set, есть некоторые отличия.

1. Метод erase если ему передать значение удаляемого элемента, удаляет все элементы, равные данному. Для удаления ровно одного элемента нужно методу erase передать итератор на удаляемый элемент. Например, чтобы удалить ровно один элемент, равный x, нужно сделать так:

s.erase(s.find(x));

2. Метод count(x) возвращает количество элементов, равных x. Сложность этого алгоритма равна $O(\log n + k)$, где $n$ -- количество элементов в множестве, $k$ -- количество элементов, равных x. То есть единственный способ понять, сколько в множестве содержится элементов, равных $x$ -- это найти первый элемент, а затем двигаться дальше по дереву просматривая все элементы, до появления первого элемента, не равного x.