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}}
+
{{Автор|Егор Гутров|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