Multiset: различия между версиями
Материал из Algocode wiki
м (added tags) |
|||
Строка 3: | Строка 3: | ||
<code>erase</code> удаляет все элементы с таким значением. Чтобы удалить один, надо написать: <code>s.erase(s.find(x))</code>. Но нужно быть аккуратнее с таким способом, т.к. здесь происходит удаление по итератору. То есть, если элемента в множестве не будет, <code>s.find(x)</code> вернет <code>s.end()</code>, и программа при удалении, скорее всего, упадет. | <code>erase</code> удаляет все элементы с таким значением. Чтобы удалить один, надо написать: <code>s.erase(s.find(x))</code>. Но нужно быть аккуратнее с таким способом, т.к. здесь происходит удаление по итератору. То есть, если элемента в множестве не будет, <code>s.find(x)</code> вернет <code>s.end()</code>, и программа при удалении, скорее всего, упадет. | ||
− | {{Автор|Егор Гутров| | + | {{Автор|Егор Гутров|Egor_Gutrov}} |
[[Категория:Конспект]] | [[Категория:Конспект]] | ||
[[Категория:C++ и STL]] | [[Категория:C++ и STL]] |
Текущая версия на 09:44, 28 ноября 2019
multiset
- то же, что и set
, но может содержать повторяющиеся элементы.
count
работает за $O(\log{n} + c)$, где $c$ - количество искомых элементов. Поэтому, чтобы проверить наличие элемента $x$ в multiset s
, надо воспользоваться: s.find(el) != s.end()
.
erase
удаляет все элементы с таким значением. Чтобы удалить один, надо написать: s.erase(s.find(x))
. Но нужно быть аккуратнее с таким способом, т.к. здесь происходит удаление по итератору. То есть, если элемента в множестве не будет, s.find(x)
вернет s.end()
, и программа при удалении, скорее всего, упадет.
Автор конспекта: Егор Гутров
По всем вопросам пишите в telegram @Egor_Gutrov