std::set::extract
Материал из cppreference.com
node_type extract( const_iterator position ); |
(1) | (начиная с C++17) |
node_type extract( const key_type& x ); |
(2) | (начиная с C++17) |
1) Извлекает узел, который содержит элемент, на который указывает
position
и возвращаетдескриптор узла которому он принадлежит2) Если контейнер имеет элемент с ключом, который равен
x
, то излекает этот элемент из контейнера и возвращаетдескриптор узла, которому он принадлежит. В противном случае, возвращает пустой дескриптор.В любом случае, элементы не копируются и не перемещаются, только внутренние указатели узлов контейнера переопределяются (может произойти перебалансировка, как с erase())
Извлечение узла делает недействительными итераторы для извлеченного элемента. Указатели и ссылки на извлеченный элемент остаются действительными, но не могут использоваться, пока элемент принадлежит дескриптору узла: они становятся пригодными для использования, если элемент вставлен в контейнер.
Содержание |
[править] Параметры
position | — | валидный итератор |
x | — | ключ для идентификации извлекаемого узла |
[править] Возвращаемое значение
Дескриптор узла, которому принадлежит извлеченный элемент, или пустой дескриптор узла, если элемент не найден в перегрузке (2)
[править] Сложность
1) амортизированная константа
2) log(a.size())
[править] Заметки
extract - единственный способ извлечь только перемещаемый объект из set
set<move_only_type> s; s.emplace(...); move_only_type mot = move(s.extract(s.begin()).value());
[править] Пример
Этот раздел не завершён Причина: нет примера |
[править] См. также
(C++17) |
сливает с узлами из другого контейнера (public функция-элемент) |
вставляет элементы или узлы (начиная с C++17) (public функция-элемент) | |
удаляет элементы (public функция-элемент) |