unordered_set::insert
Вставляет элемент или диапазон элементов в unordered_set.
// (1) single element pair<iterator, bool> insert( const value_type& Val ); // (2) single element, perfect forwarded template<class ValTy> pair<iterator, bool> insert( ValTy&& Val ); // (3) single element with hint iterator insert( const_iterator Where, const value_type& Val ); // (4) single element, perfect forwarded, with hint template<class ValTy> iterator insert( const_iterator Where, ValTy&& Val ); // (5) range template<class InputIterator> void insert( InputIterator First, InputIterator Last ); // (6) initializer list void insert( initializer_list<value_type> IList );
Параметры
Параметр |
Описание |
Val |
Значение элемента, вставляемого в unordered_set, если оно уже не содержит элемент, ключ которого эквивалентно упорядочен. |
Where |
Место начала поиска правильной точки вставки. |
ValTy |
Параметр шаблона, определяющий тип аргумента, с помощью которого unordered_set формирует элемент типа value_type и точно пересылает Val как аргумент. |
First |
Позиция первого элемента, который следует скопировать. |
Last |
Позиция непосредственно перед последним элементом, который следует скопировать. |
InputIterator |
Аргумент функции-шаблона, который соответствует требованиям итератора ввода, указывающего на элементы типа, которые можно использовать для создания объектов value_type. |
IList |
Объект initializer_list, из которого копируются элементы. |
Возвращаемое значение
Одноэлементные функции-члены (1) и (2) возвращают пару, компонент bool которой имеет значение true, если была осуществлена вставка, и значение false, если unordered_set уже содержало элемент с эквивалентным порядковым значением ключа. Компонент итератора пары возвращаемых значений указывает на вставленный элемент, если значение компонента bool равно true, или на существующий элемент, если значение компонента bool равно false.
Одноэлементные функции-члены с подсказкой (3) и (4) возвращают итератор, который указывает на позицию, где новый элемент был вставлен, или, если элемент с эквивалентным ключом уже существует, указывает на существующий элемент.
Заметки
Эта функция не делает никакие итераторы, указатели или ссылки недействительными.
Если исключение вызывается во время вставки одного элемента, но оно не вызывается в хэш-функции контейнера, состояние контейнера не изменяется. Если исключение вызывается в хэш-функции, результат не определен. Если во время вставки нескольких элементов вызывается исключение, контейнер остается в неопределенном, но допустимом состоянии.
Для доступа к компоненту итератора pair pr, возвращаемого одноэлементными функциями-членами, используйте pr.first. Для разыменования итератора в возвращенной паре используйте *pr.first, чтобы получить элемент. Для доступа к компоненту bool используйте pr.second. См. пример кода далее в этой статье.
value_type контейнера — это определение типа, которое принадлежит контейнеру, а для набора unordered_set<V>::value_type — это const V.
Функция-член с диапазоном (5) вставляет последовательность значений элементов в unordered_set, соответствующее каждому элементу, адресованному итератором в диапазоне [First, Last). Следовательно, Last не вставляется. Контейнер функции-члена end() ссылается на позицию сразу после последнего элемента в контейнере. Например, оператор s.insert(v.begin(), v.end()); пытается вставить все элементы v в s. Вставляются только элементы с уникальными значениями в диапазоне. Повторяющиеся значения игнорируются. Чтобы увидеть, какие элементы отклонены, используйте одноэлементные версии insert.
Функция-член списка инициализаторов (6) использует initializer_list для копирования элементов в unordered_set.
Сведения о вставке элемента, созданного на месте (т. е. без выполнения операций копирования или перемещения), см. в описании функций set::emplace и set::emplace_hint.
Пример кода см. в разделе set::insert.
Требования
Заголовок: <unordered_set>
Пространство имен: std