- Контейнер set (множество)
- Итераторы
- Вывод элементов коллекции Set
- Класс set
- Синтаксис
- Параметры
- Remarks
- Конструкторы
- Определения типов
- Функции
- Операторы
- allocator_type
- Remarks
- Пример
- begin
- Возвращаемое значение
- Remarks
- Пример
- cbegin
- Возвращаемое значение
- Remarks
- Возвращаемое значение
- Remarks
- clear
- Пример
- const_iterator
- Remarks
- Пример
- const_pointer
- Remarks
- const_reference
- Пример
- const_reverse_iterator
- Remarks
- Пример
- contains
- Параметры
- Возвращаемое значение
- Remarks
- Пример
- count
- Параметры
- Возвращаемое значение
- Remarks
- Пример
- crbegin
- Возвращаемое значение
- Remarks
- Пример
- crend
- Возвращаемое значение
- Remarks
- Пример
- difference_type
- Remarks
- Пример
- emplace
- Параметры
- Возвращаемое значение
- Remarks
- Пример
- emplace_hint
- Параметры
- Возвращаемое значение
- Remarks
- Пример
- empty
- Возвращаемое значение
- Пример
- Возвращаемое значение
- Remarks
- equal_range
- Параметры
- Возвращаемое значение
- Пример
- erase
- Параметры
- Возвращаемое значение
- Пример
- Параметры
- Возвращаемое значение
- Remarks
- Пример
- get_allocator
- Возвращаемое значение
- Remarks
- Пример
- Вставляет
- Параметры
- Возвращаемое значение
- Remarks
- Пример
- iterator
- Пример
- key_comp
- Возвращаемое значение
- Remarks
- Пример
- key_compare
- Remarks
- Пример
- key_type
- Remarks
- Пример
- lower_bound
- Параметры
- Возвращаемое значение
- Пример
- max_size
- Возвращаемое значение
- Пример
- operator=
- Параметры
- Remarks
- Пример
- pointer
- Remarks
- rbegin
- Возвращаемое значение
- Remarks
- Пример
- reference
- Пример
- Возвращаемое значение
- Remarks
- Пример
- reverse_iterator
- Remarks
- Пример
- Параметры
- Remarks
- Пример
- Возвращаемое значение
- Пример
- size_type
- Пример
- Параметры
- Remarks
- Пример
- upper_bound
- Параметры
- Возвращаемое значение
- Пример
- value_comp
- Возвращаемое значение
- Remarks
- Пример
- value_compare
- Remarks
- Пример
- value_type
- Remarks
Контейнер set (множество)
Множество — это структура данных, эквивалентная множествам в математике. Множество состоит из различных элементов заданного типа и поддерживает операции добавления элемента в множество, удаления элемента из множества, проверка принадлежности элемента множеству. Одно и то же значение хранится в множестве только один раз.
Для представления множеств в библиотеке STL имеется контейнер set , который реализован при помощи сбалансированного двоичного дерева поиска (красно-черного дерева), поэтому множества в STL хранятся в виде упорядоченной структуры, что позволяет перебирать элементы множества в порядке возрастания их значений. Для использования контейнера set нужно подключить заголовочный файл .
Подробней о возможностях контейнера set можно прочитать, например, на сайте cppreference.com.
В простейшем случае множество, например, данных типа int объявляется так:
Для добавления элемента в множество используется метод insert :
Для проверки принадлежности элемента множеству используется метод count . Этот метод возвращает количество вхождения передаваемого параметра в данный контейнер, но поскольку в множестве все элементы уникальные, то count для типа set всегда возвращает 0 или 1. То есть для проверки принадлежности значения x множеству S можно использовать следующий код:
Для удаления элемента используется метод erase . Ему можно передать значение элемента, итератор, указывающий на элемент или два итератора (в этом случае удаляется целый интервал элементов, содержащийся между заданными итераторами). Вот два способа удалить элемент x :
Метод size() возвращает количество элементов в множестве, метод empty() , возвращает логическое значение, равное true , если в множестве нет элементов, метод clear() удаляет все элементы из множества.
Итераторы
С итераторами контейнера set можно выполнять операции инкремента (что означает переход к следующему элементу) и декремента (переход к предыдущему элементу). Итераторы можно сравнивать на равенство и неравенство. Операции сравнения итераторов при помощи » «, «>=» невозможны, также невозможно использовать операции прибавления к итератору числа.
Разыменование итератора (применение унарного оператора * ) возвращает значение элемента множества, на который указывает итератор.
У множества есть метод begin() , который возвращает итератор на первый элемент множества, и метод e nd() , который возвращает фиктивный итератор на элемет, следующий за последним элементом в множестве. Таким образом, вывести все элементы множества можно так:
set ::iterator it;
for (it = S.begin(); it != S.end(); ++it)
cout set используется метод find . Этот метод возвращает итератор на элемент, а если элемент не найден, то он возвращает итератор end() (т.е. на фиктивный элемент, следующий за последним элементом множества. Используя этот метод проверить принадлежность элемента множеству можно так:
Также есть методы lower_bound и upper_bound , которые находят первых элемент, больше или равный x и первый элемент, строго больший x (аналогично двоичному поиску элемента в массиве).
Эти методы также возвращают итераторы, а если таких элементов (больше или равных или строго больших) нет в множестве, они возвращают end() .
Например, удалить из set минимальный элемент, строго больший x можно так:
Источник
Вывод элементов коллекции Set
Как вывести определенный элемент из коллекции HashSet?
Знаю что в ArrayList есть ф-ция .get(), но в Set так нельзя.
Комментарий модератора | ||
|
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Поиск элементов в коллекции и вывод найденных
Есть коллекции ArrayList и текстовое поле TextArea. Метод вызывается нажатием на кнопку. Он должен.
Удаление элемента из Set-коллекции
Проблема вот в чем, нужно из cats удалить одного «кота» Что я делаю не так? public class Solution.
Xsd scheme — коллекции map и set
Парни, нужна помощь, как в xsd схеме написать map или set коллекцию. Нигде не смог найти, может.
Как найти подстроку из элемента коллекции типа Set
Привет всем. Есть метод: private ArrayList addParents(ArrayList input) < .
если сравнить название темы и первый и последний ответ
Как вывести определенный элемент из коллекции HashSet?
Знаю что в ArrayList есть ф-ция .get(), но в Set так нельзя.
Тангенс, в чем разница между Set и List?
Вывод коллекции итератором не работает
Есть два способа вывода коллекции в консоль: for (Integer i:arrayList) //итератором .
Union(Set set1, Set set2) и intersect(Set set1, Set set2)
Напишите методы union(Set set1, Set set2) и intersect(Set set1, Set set2), реализующих операции.
Удаление элементов коллекции
Привет всем)помогите пожалуйста разобраться почему не работает код: public static void.
Коллекция Set и уникальность элементов
Доброго времени суток Интересует вопрос: как Set проверяет элементы на уникальность ? Правильно.
Источник
Класс set
Класс контейнера стандартной библиотеки C++ set используется для хранения и извлечения данных из коллекции. Значения элементов в set являются уникальными и служат в качестве ключевых значений, в соответствии с которыми данные автоматически упорядочиваются. Значение элемента в set не может быть изменено напрямую. Вместо этого старые значения необходимо удалить и вставить элементы с новыми значениями.
Синтаксис
Параметры
Key
Тип данных элемента для сохранения в наборе.
Traits
Тип, предоставляющий объект функции, который может сравнить два значения элемента как ключи сортировки, чтобы определить их относительный порядок в наборе. Этот аргумент является необязательным, а бинарный предикат less — значением по умолчанию.
В C++ 14 можно включить разнородный Уточняющий запрос, указав std::less<> предикат или std::greater<> , не имеющий параметров типа. Дополнительные сведения см. в разделе разнородный Уточняющий запрос в ассоциативных контейнерах .
Allocator
Тип, представляющий сохраненный объект распределителя, который инкапсулирует сведения о выделении и освобождении памяти для набора. Этот аргумент является необязательным, и в качестве значения по умолчанию используется allocator .
Remarks
Набор стандартной библиотеки C++ — это:
Ассоциативный контейнер, который является контейнером переменного размера, поддерживающим эффективное получение значений элементов на основе значения соответствующего ключа. Кроме того, это простой ассоциативный контейнер, поскольку его значения элементов являются его ключевыми значениями.
Является реверсивным, поскольку предоставляет двунаправленный итератор для получения доступа к его элементам.
Сортированный, поскольку его элементы упорядочены по значениям ключей в контейнере в соответствии с заданной функцией сравнения.
Является уникальным, поскольку каждый его элемент должен обладать уникальным ключом. Поскольку набор также является простым ассоциативным контейнером, его элементы также являются уникальными.
Набор также описывается как шаблон класса, так как предоставляемые им функциональные возможности являются универсальными и не зависят от конкретного типа данных, содержащихся в качестве элементов. Тип данных, подлежащий использованию, вместо этого определяется как параметры в шаблоне класса вместе с функцией и распределителем сравнения.
Выбор типа контейнера должен в общем случае производиться на основе типа поиска и вставки, который требуется приложению. Ассоциативные контейнеры оптимизированы для операций поиска, вставки и удаления. Функции-члены, которые явно поддерживают эти операции, являются эффективными, и их выполнение выполняется в среднем пропорционально логарифму числа элементов в контейнере. Вставка элементов сделает недействительными итераторы, а удаление элементов сделает недействительными только те итераторы, которые указывают на удаленные элементы.
Набор рекомендуется использовать в качестве ассоциативного контейнера, если условия, ассоциирующие значения с ключами, удовлетворяются приложением. Элементы набора являются уникальным и используются в качестве своих собственных ключей сортировки. Модель для этого типа структуры — упорядоченный список, например, ключевых слов, в котором слова не должны повторяться. Если допускается повторное использование слов, то подходящей структурой контейнера будет multiset. Если значения вносятся в список уникальных ключевых слов, сопоставление является подходящей структурой для размещения этих данных. Если же ключи не являются уникальными, то multimap будет контейнером выбора.
Набор упорядочивает последовательность, которую он управляет, путем вызова хранимой функции типа key_compare . Этот сохраненный объект является функцией сравнения, доступ к которой можно получить путем вызова функции-члена key_comp . Как правило, элементы должны быть просто менее сравнимы, чтобы установить этот порядок, чтобы при наличии любых двух элементов можно было определить, что они эквивалентны (в смысле, что ни одно из них не меньше другого) или что один меньше другого. Это приводит к упорядочению неравнозначных элементов. С более технической точки зрения, функция сравнения является бинарным предикатом, который вызывает строгого слабое упорядочение в стандартном математически смысле. Бинарный предикат f(x, y) — это объект функции, имеющий два объекта-аргумента x и y , а также возвращаемое значение true или false . Порядок, накладываемый на набор, является строгим слабым порядком, если бинарный предикат является нерефлексивным, антисимметричным и транзитивным и если эквивалентность является транзитивным, где два объекта x и y определяются как эквивалентные, если значения f x, y и f(y, x) равны false. Если более строгое условие равенства между ключами заменяет условие эквивалентности, порядок становится общим (т.е. все элементы упорядочиваются относительно друг друга), и сопоставленные ключи будут неотличимы друг от друга.
В C++ 14 можно включить разнородный Уточняющий запрос, указав std::less<> предикат или std::greater<> , не имеющий параметров типа. Дополнительные сведения см. в разделе разнородный Уточняющий запрос в ассоциативных контейнерах .
Итератор, предоставляемый классом набора, является двунаправленным итератором, но функции-члены класса insert и set имеют версии, принимающие в качестве параметров шаблона более слабый итератор ввода, чьи функциональные требования более минимальны, чем гарантированные классом двунаправленных итераторов. Различные концепции итераторов образуют семейство, связанное уточнениями функциональности. Каждая концепция итератора имеет собственный набор требований, а алгоритмы, работающие с ними, должны ограничивать свои предположения согласно требованиям, предоставляемым этим типом итератора. Можно предположить, что итератор ввода может быть разыменован для обращения к определенному объекту и инкрементирован до следующего итератора в последовательности. Это минимальный набор функциональных возможностей, но достаточно для того, чтобы иметь возможность осмысленно говорить о диапазоне итераторов [ First , Last ) в контексте функций-членов класса.
Конструкторы
Имя | Описание |
---|---|
set | Создает набор, который является пустым или копией части или целого другого набора. |
Определения типов
Имя | Описание |
---|---|
allocator_type | Тип, представляющий класс allocator для объекта набора. |
const_iterator | Тип, предоставляющий двунаправленный итератор, который может читать const элемент в наборе. |
const_pointer | Тип, предоставляющий указатель на const элемент в наборе. |
const_reference | Тип, предоставляющий ссылку на const элемент, хранящийся в наборе для чтения и выполнения const операций. |
const_reverse_iterator | Тип, предоставляющий двунаправленный итератор, который может читать любой const элемент в наборе. |
difference_type | Тип целого числа со знаком, пригодный для использования в качестве представления количества элементов в наборе в диапазоне между элементами, на которые указывают итераторы. |
iterator | Тип, предоставляющий двунаправленный итератор, который может считывать или изменять любой элемент в наборе. |
key_compare | Тип, предоставляющий объект функции, который может сравнить два ключа сортировки для определения относительного порядка двух элементов в наборе. |
key_type | Тип, описывающий объект, сохраненный как элемент набора в смысле его возможностей, присущих ключу сортировки. |
pointer | Тип, предоставляющий указатель на элемент в наборе. |
reference | Тип, предоставляющий ссылку на элемент, хранящийся в наборе. |
reverse_iterator | Тип, предоставляющий двунаправленный итератор, который может считывать или изменять элемент в обращенном наборе. |
size_type | Тип целого числа без знака, который может представлять число элементов в наборе. |
value_compare | Тип, предоставляющий объект функции, который может сравнить два элемента, чтобы определить их относительный порядок в наборе. |
value_type | Тип, описывающий объект, сохраненный как элемент набора в смысле его возможностей, присущих значению. |
Функции
Имя | Описание |
---|---|
begin | Возвращает итератор, обращающийся к первому элементу в set . |
cbegin | Возвращает итератор const, обращающийся к первому элементу в set . |
cend | Возвращает итератор const, который обращается к месту, следующему за последним элементом в set . |
clear | Стирает все элементы в set . |
contains C++ 20 | Проверьте, существует ли элемент с указанным ключом в set . |
count | Возвращает число элементов в контейнере set , ключи которых соответствуют ключу, заданному параметром. |
crbegin | Возвращает итератор const, который обращается к первому элементу в обращенном контейнере set . |
crend | Возвращает итератор const, который обращается к месту, следующему за последним элементом в обращенном контейнере set . |
emplace | Вставляет созданный на месте элемент в set . |
emplace_hint | Вставляет созданный на месте элемент в set с подсказкой о размещении. |
empty | Проверяет, пуст ли set . |
end | Возвращает итератор, который обращается к месту, следующему за последним элементом в контейнере set . |
equal_range | Возвращает пару итераторов соответственно на первый элемент в set с ключом, который больше, чем указанный ключ, и на первый элемент в set с ключом, который больше или равен данному ключу. |
erase | Удаляет элемент или диапазон элементов в наборе с заданных позиций или удаляет элементы, соответствующие заданному ключу. |
find | Возвращает итератор, адресующий расположение элемента в наборе set с ключом, эквивалентным указанному ключу. |
get_allocator | Возвращает копию объекта allocator , который используется для создания контейнера set . |
insert | Вставляет элемент или диапазон элементов в set . |
key_comp | Извлекает копию объекта сравнения, который используется для упорядочивания ключей в контейнере set . |
lower_bound | Возвращает итератор, указывающий на первый элемент в наборе с ключом, который больше или равен указанному ключу. |
max_size | Возвращает максимальную длину set . |
rbegin | Возвращает итератор, который обращается к первому элементу в обращенном контейнере set . |
rend | Возвращает итератор, который обращается к месту, следующему за последним элементом в обращенном контейнере set . |
size | Возвращает количество элементов в контейнере set . |
swap | Выполняет обмен элементами между двумя объектами set . |
upper_bound | Возвращает итератор, указывающий на первый элемент в set с ключом, который больше указанного ключа. |
value_comp | Извлекает копию объекта сравнения, который используется для упорядочивания значений элементов в наборе set . |
Операторы
Имя | Описание |
---|---|
operator= | Заменяет элементы набора копией другого набора. |
allocator_type
Тип, представляющий класс распределителя для объекта-набора.
Remarks
allocator_type является синонимом для параметра-шаблона Allocator .
Возвращает объект-функцию, которую мультинабор использует для упорядочивания своих элементов, который является параметром-шаблоном Allocator .
Дополнительные сведения о см Allocator . в подразделе «Примечания» статьи о set классе .
Пример
Пример использования см. в примере для get_allocator allocator_type .
begin
Возвращает итератор, обращающийся к первому элементу в наборе.
Возвращаемое значение
Двунаправленный итератор, адресующий первый элемент в наборе или положение после пустого набора.
Remarks
Если возвращаемое значение begin присваивается const_iterator , то элементы в объекте набора нельзя изменить. Если возвращаемое значение begin присваивается iterator , то элементы в объекте набора могут быть изменены.
Пример
cbegin
Возвращает const итератор, который обращается к первому элементу в диапазоне.
Возвращаемое значение
const Итератор двунаправленного доступа, указывающий на первый элемент диапазона, или расположение непосредственно за концом пустого диапазона (для пустого диапазона cbegin() == cend() ).
Remarks
С возвращаемым значением cbegin элементы в диапазоне нельзя изменять.
Эту функцию-член можно использовать вместо функции-члена begin() , чтобы гарантировать, что возвращаемое значение будет const_iterator . Как правило, он используется вместе с auto ключевым словом выведения типа, как показано в следующем примере. В этом примере рекомендуется использовать Container изменяемый (не- const ) контейнер любого типа, который поддерживает begin() и cbegin() .
Возвращает const итератор, который обращается к расположению сразу за последним элементом в диапазоне.
Возвращаемое значение
const Итератор двунаправленного доступа, указывающий на сразу за концом диапазона.
Remarks
cend используется для проверки того, прошел ли итератор конец диапазона.
Эту функцию-член можно использовать вместо функции-члена end() , чтобы гарантировать, что возвращаемое значение будет const_iterator . Как правило, он используется вместе с auto ключевым словом выведения типа, как показано в следующем примере. В этом примере рекомендуется использовать Container изменяемый (не- const ) контейнер любого типа, который поддерживает end() и cend() .
Значение, возвращаемое, cend не должно быть разыменовано.
clear
Стирает все элементы в наборе.
Пример
const_iterator
Тип, предоставляющий двунаправленный итератор, который может читать const элемент в наборе.
Remarks
Тип const_iterator нельзя использовать для изменения значения элемента.
Пример
Пример использования см. в примере для begin const_iterator .
const_pointer
Тип, предоставляющий указатель на const элемент в наборе.
Remarks
Тип const_pointer нельзя использовать для изменения значения элемента.
В большинстве случаев const_iterator для доступа к элементам в объекте константного набора следует использовать.
const_reference
Тип, предоставляющий ссылку на const элемент, хранящийся в наборе для чтения и выполнения const операций.
Пример
const_reverse_iterator
Тип, предоставляющий двунаправленный итератор, который может читать любой const элемент в наборе.
Remarks
Тип const_reverse_iterator не может изменять значение элемента и используется для прохода по набору в обратную.
Пример
См rend . Пример объявления и использования const_reverse_iterator .
contains
Проверьте, существует ли элемент с указанным ключом в set .
Параметры
key
Искомое значение ключа элемента.
Возвращаемое значение
true значение, если элемент найден в set ; false в противном случае —.
Remarks
contains() Новое в C++ 20. Чтобы использовать его, укажите /std:c++latest параметр компилятора.
template bool contains(const K& key) const принимает участие в разрешении перегрузки только в key_compare том случае, если является прозрачным. Дополнительные сведения см. в разделе разнородный Уточняющий запрос в ассоциативных контейнерах .
Пример
count
Возвращает число элементов в наборе, ключи которых соответствуют ключу, заданному параметром.
Параметры
key
Ключ для сравнения с ключами элементов набора.
Возвращаемое значение
1, если набор содержит элемент, ключ сортировки которого совпадает с ключом параметра. 0, если набор не содержит элемент с совпадающим ключом.
Remarks
Функция-член возвращает число элементов в следующем диапазоне:
[ lower_bound ( key ), upper_bound ( key )).
Пример
В следующем примере демонстрируется использование set::count функции члена.
crbegin
Возвращает итератор const, который обращается к первому элементу в обращенном наборе.
Возвращаемое значение
Константный обратный двунаправленный итератор, адресующий первый элемент в обратном наборе или элемент, который был последним элементом в наборе до изменения его порядка на противоположный.
Remarks
crbegin используется с обратным набором так же, как begin используется с набором.
При возвращении значения crbegin объект набора нельзя изменить.
Пример
crend
Возвращает итератор const, который обращается к месту, следующему за последним элементом в обращенном наборе.
Возвращаемое значение
Константный обратный двунаправленный итератор, адресующий расположение после последнего элемента в обратном наборе (расположение перед первым элементом в наборе до изменения его порядка на обратный).
Remarks
crend используется с обратным набором так же, как end используется с набором.
При возвращении значения crend объект набора нельзя изменить. Значение, возвращаемое, crend не должно быть разыменовано.
crend используется, чтобы проверить, достиг ли обратный итератор конца набора.
Пример
difference_type
Тип целого числа со знаком, пригодный для использования в качестве представления количества элементов в наборе в диапазоне между элементами, на которые указывают итераторы.
Remarks
difference_type — тип, возвращаемый при вычитании или приращении через итераторы контейнера. difference_type обычно используется для представления количества элементов в диапазоне [ first, last) между итераторами first и last , включая элемент, на который указывает first , и диапазон элементов до элемента, на который указывает last , но не включая его.
Несмотря на то, difference_type что доступен для всех итераторов, удовлетворяющих требованиям итератора ввода, который включает класс двунаправленных итераторов, поддерживаемых обратимыми контейнерами, такими как набор, вычитание между итераторами поддерживается только итераторами произвольного доступа, предоставляемыми контейнером произвольного доступа, таким как Vector.
Пример
emplace
Вставляет элемент, созданный на месте (операции копирования или перемещения не выполняются).
Параметры
args
Аргументы, передаваемые для создания элемента для вставки в набор, кроме случаев, когда сопоставление уже содержит элемент, значение которого правильным образом упорядочено.
Возвращаемое значение
Объект, pair логический компонент которого возвращает значение true, если была произведена вставка, и значение false, если в карте уже содержится элемент, значение которого было эквивалентно значению в упорядочении. Компонент итератора пары возвращаемых значений возвращает адрес, где был вставлен новый элемент (если компонент bool имеет значение true) или где уже находился элемент (если компонент bool имеет значение false).
Remarks
Эта функция не делает недействительными никакие итераторы или ссылки.
Во время назначения места при возникновении исключения состояние контейнера не изменяется.
Пример
emplace_hint
Вставляет созданный элемент на место (операции копирования или перемещения не выполняются) с указанием о размещении.
Параметры
args
Аргументы, передаваемые для создания элемента, который будет вставлен в набор, кроме ситуации, когда набор уже содержит этот элемент или, в более общем случае, кроме ситуации, когда набор уже содержит элемент, ключ которого правильно упорядочен.
where
Место начала поиска правильной точки вставки. (Если эта точка непосредственно предшествует where , то вставка может выполняться в периодической константе вместо логарифмического времени.)
Возвращаемое значение
Итератор, указывающий на вновь вставленный элемент.
Если не удалось вставить элемент, так как он уже существует, возвращается итератор на существующий элемент.
Remarks
Эта функция не делает недействительными никакие итераторы или ссылки.
Во время назначения места при возникновении исключения состояние контейнера не изменяется.
Пример
empty
Проверяет, пуст ли набор.
Возвращаемое значение
true значение, если набор пуст; false значение, если набор не пуст.
Пример
Возврат итератора после конца.
Возвращаемое значение
Итератор после конца. Если набор пуст, то set::end() == set::begin() .
Remarks
end используется для проверки, прошел ли итератор конец своего набора.
Значение, возвращаемое, end не должно быть разыменовано.
Пример кода см. в разделе set::find .
equal_range
Возвращает пару итераторов соответственно на первый элемент в наборе с ключом, который не меньше, чем указанный ключ, и на первый элемент в наборе с ключом, который больше данного ключа.
Параметры
key
Ключ-аргумент, который будет сравниваться с ключом сортировки элемента из набора, в котором выполняется поиск.
Возвращаемое значение
Пара итераторов, первый из которых является ключом, lower_bound а второй — upper_bound ключом.
Для доступа к первому итератору пары pr , возвращаемой функцией-членом, нужно использовать pr . во- первых, и для разыменования итератора нижней границы используйте * ( pr . первый). Для доступа ко второму итератору пары pr , возвращаемой функцией-членом, нужно использовать pr . во-вторых, а для разыменования итератора верхней границы используйте * ( pr . второй).
Пример
erase
Удаляет элемент или диапазон элементов в наборе с заданных позиций или удаляет элементы, соответствующие заданному ключу.
Параметры
Where
Положение удаляемого элемента.
First
Положение первого удаляемого элемента.
Last
Позиция после последнего элемента для удаления.
Key
Значение ключа удаляемых элементов.
Возвращаемое значение
Для первых двух функций-членов это двунаправленный итератор, обозначающий первый элемент, остающийся после любых удаленных элементов, или элемент в конце набора, если таких элементов нет.
Третья функция-член возвращает количество элементов, которые были удалены из набора.
Пример
Возвращает итератор, ссылающийся на элемент в наборе, ключ которого эквивалентен заданному ключу.
Параметры
key
Значение ключа, с которым сравнивается ключ сортировки элемента из набора, по которому выполняется поиск.
Возвращаемое значение
Итератор, ссылающийся на расположение элемента с указанным ключом или на расположение элемента после последнего элемента в наборе ( set::end() ), если для ключа не найдено совпадений.
Remarks
Функция-член возвращает итератор, который ссылается на элемент в наборе, ключ которого эквивалентен ключу аргумента в бинарном предикате, который вызывает упорядочивание на основе отношения сравнения «меньше».
Если возвращаемое значение find присваивается const_iterator , то объект набора нельзя изменить. Если возвращаемое значение find присваивается iterator , то объект набора можно изменить.
Пример
get_allocator
Возвращает копию объекта-распределителя, использованного для создания набора.
Возвращаемое значение
Распределитель, использующийся набор для управления памятью, который является параметром-шаблоном Allocator .
Дополнительные сведения о см Allocator . в подразделе «Примечания» статьи о set классе .
Remarks
Распределители для класса набора определяют, как этот класс управляет хранилищем. Для большинства задач программирования достаточно иметь распределители по умолчанию, поставляемые вместе с классами контейнеров стандартной библиотеки C++. Написание и использование собственного класса распределителя требует расширенных навыков работы с C++.
Пример
Вставляет
Вставляет элемент или диапазон элементов в набор.
Параметры
Val
Значение элемента, вставляемого в набор, если оно уже не содержит элемент, значение которого эквивалентно упорядочено.
Where
Место начала поиска правильной точки вставки. (Если точка непосредственно перед точкой, то Вставка может выполняться в периодической константе вместо логарифмического времени.)
ValTy
Параметр шаблона, указывающий тип аргумента, который может использоваться в наборе для создания элемента value_type , и функция идеально пересылает Val в качестве аргумента.
First
Позиция первого элемента, который следует скопировать.
Last
Позиция непосредственно перед последним элементом, который следует скопировать.
InputIterator
Аргумент функции-шаблона, соответствующий требованиям итератора ввода , указывающего на элементы типа, которые могут использоваться для построения value_type объектов.
IList
Объект, initializer_list из которого копируются элементы.
Возвращаемое значение
Одноэлементные функции-члены (1) и (2) возвращают объект, pair bool компонент которого имеет значение true, если была произведена вставка, и значение false, если набор уже содержал элемент эквивалентного значения в упорядочении. Компонент итератора пары «возвращаемое значение» указывает на вновь вставленный элемент, если bool компонент имеет значение true, или на существующий элемент, если bool компонент имеет значение false.
Одноэлеметные функции-члены с подсказкой (3) и (4) возвращают итератор, который указывает на позицию, где новый элемент был вставлен, или, если элемент с эквивалентным ключом уже существует, указывает на существующий элемент.
Remarks
Эта функция не делает никакие итераторы, указатели или ссылки недействительными.
При вставке всего одного элемента при возникновении исключения состояние контейнера не изменяется. Если во время вставки нескольких элементов вызывается исключение, контейнер остается в неопределенном, но допустимом состоянии.
Чтобы получить доступ к компоненту итератора pair pr , возвращаемому функциями-членами с одним элементом, используйте оператор pr.first ; для разыменования итератора в возвращенной паре используйте *pr.first , предоставив элемент. Чтобы получить доступ к bool компоненту, используйте pr.second . См. пример кода далее в этой статье.
value_type Контейнером является typedef, принадлежащий контейнеру, а для набора set ::value_type — тип const V .
Функция-член Range (5) вставляет последовательность значений элементов в набор, соответствующий каждому элементу, адресованному итератором в диапазоне [First, Last) , поэтому Last не вставляется. Контейнер функции-члена end() ссылается на позицию сразу после последнего элемента в контейнере. Например, оператор s.insert(v.begin(), v.end()); пытается вставить все элементы v в s . Вставляются только элементы с уникальными значениями в диапазоне. Повторяющиеся значения игнорируются. Чтобы увидеть, какие элементы отклонены, используйте одноэлементные версии insert .
Функция-член списка инициализаторов (6) использует initializer_list для копирования элементов в набор.
Для вставки элемента, созданного на месте (т. е. не выполняются операции копирования или перемещения), set::emplace см set::emplace_hint . и.
Пример
iterator
Тип, предоставляющий константный двунаправленный итератор, который может читать любой элемент в наборе.
Пример
См begin . Пример объявления и использования iterator .
key_comp
Извлекает копию объекта сравнения, который используется для упорядочивания ключей в наборе.
Возвращаемое значение
Возвращает объект-функцию, которую набор использует для упорядочивания своих элементов, что является параметром-шаблоном Traits .
Дополнительные сведения о Traits см. в разделе о set классе .
Remarks
Сохраненный объект определяет функцию-член:
возвращающий значение, true Если _xVal _yVal в порядке сортировки предшествует и не равны.
key_compare И value_compare являются синонимами для параметра шаблона Traits . Оба типа предоставляются для классов наборов и мультинаборов, где они идентичны, для совместимости с классами Map и multimap, где они отличаются.
Пример
key_compare
Тип, предоставляющий объект функции, который может сравнить два ключа сортировки для определения относительного порядка двух элементов в наборе.
Remarks
key_compare является синонимом для параметра-шаблона Traits .
Дополнительные сведения о Traits см. в разделе о set классе .
key_compare И value_compare являются синонимами для параметра шаблона Traits . Оба типа предоставляются для классов наборов и мультинаборов, где они идентичны, для совместимости с классами Map и multimap, где они отличаются.
Пример
key_comp Пример объявления и использования см. в примере для key_compare .
key_type
Тип, описывающий объект, сохраненный как элемент набора в смысле его возможностей, присущих ключу сортировки.
Remarks
key_type является синонимом для параметра-шаблона Key .
Дополнительные сведения о см Key . в подразделе «Примечания» статьи о set классе .
key_type И value_type являются синонимами для параметра шаблона Key . Оба типа предоставляются для классов наборов и мультинаборов, где они идентичны, для совместимости с классами Map и multimap, где они отличаются.
Пример
value_type Пример объявления и использования см. в примере для key_type .
lower_bound
Возвращает итератор, указывающий на первый элемент в наборе с ключом, который больше или равен указанному ключу.
Параметры
key
Ключ-аргумент, который будет сравниваться с ключом сортировки элемента из набора, в котором выполняется поиск.
Возвращаемое значение
Итератор или const_iterator , который адресует положение элемента в наборе с ключом, который равен ключу-аргументу или больше него, либо адресует положение после последнего элемента в наборе, если соответствие для ключа не найдено.
Пример
max_size
Возвращает максимальную длину набора.
Возвращаемое значение
Максимально возможная длина набора.
Пример
operator=
Заменяет элементы этого set элементами из другого set .
Параметры
right
set , предоставляющий новые элементы для назначения set .
Remarks
Первая версия operator= использует ссылку lvalue для right , чтобы скопировать элементы из right в set .
Вторая версия использует ссылку rvalue для right. Он перемещает элементы из right в set .
Все элементы в этом set до выполнения функции оператора отбрасываются.
Пример
pointer
Тип, предоставляющий указатель на элемент в наборе.
Remarks
Тип pointer можно использовать для изменения значения элемента.
В большинстве случаев iterator для доступа к элементам в объекте набора следует использовать.
rbegin
Возвращает итератор, который обращается к первому элементу в обращенном наборе.
Возвращаемое значение
Обратный двунаправленный итератор, адресующий первый элемент в обратном наборе или элемент, который был последним элементом в наборе до изменения его порядка на противоположный.
Remarks
rbegin используется с обратным набором так же, как begin используется с набором.
Если возвращаемое значение rbegin присваивается const_reverse_iterator , то объект набора нельзя изменить. Если возвращенное значение rbegin назначается reverse_iterator , то объект-набор можно изменить.
rbegin можно использовать для последовательного прохождения по списку в обратную сторону.
Пример
reference
Тип, предоставляющий ссылку на элемент, хранящийся в наборе.
Пример
Возвращает итератор, который обращается к месту, следующему за последним элементом в обращенном наборе.
Возвращаемое значение
Обратный двунаправленный итератор, адресующий расположение после последнего элемента в обратном наборе (расположение перед первым элементом в наборе до изменения его порядка на обратный).
Remarks
rend используется с обратным набором так же, как end используется с набором.
Если возвращаемое значение rend присваивается const_reverse_iterator , то объект набора нельзя изменить. Если возвращенное значение rend назначается reverse_iterator , то объект-набор можно изменить. Значение, возвращаемое, rend не должно быть разыменовано.
rend используется, чтобы проверить, достиг ли обратный итератор конца набора.
Пример
reverse_iterator
Тип, предоставляющий двунаправленный итератор, который может считывать или изменять элемент в обращенном наборе.
Remarks
Тип reverse_iterator используется для прохода по набору в обратную.
Пример
rbegin Пример объявления и использования см. в примере для reverse_iterator .
Создает набор, который является пустым или копией части или целого другого набора.
Параметры
Al
Класс распределителя хранилища, используемый для этого объекта Set, который по умолчанию имеет значение Allocator .
Comp
Функция сравнения типа const Traits используется для упорядочивания элементов в наборе, который по умолчанию имеет значение Compare .
Rght
Набор, для которого создаваемый набор станет копией.
First
Положение первого элемента в диапазоне копируемых элементов.
Last
Положение первого элемента после диапазона копируемых элементов.
IList
Объект initializer_list, из которого копируются элементы.
Remarks
Все конструкторы хранят тип объекта распределителя, который управляет хранилищем памяти для набора и затем может быть возвращен путем вызова метода get_allocator . Параметр-распределитель часто не указывается в объявлениях класса и в макросах предварительной обработки, используемых для замены альтернативных распределителей.
Все конструкторы инициализируют свои наборы.
Все конструкторы хранят объект функции типа Traits , который используется для установления порядка ключей набора и затем может быть возвращен вызовом key_comp .
Первые три конструктора указывают пустой начальный набор, второй задает тип функции сравнения ( comp ), используемой при установлении порядка элементов, а третий явно указывает тип распределителя ( al ) для использования. Ключевое слово explicit подавляет определенные виды автоматического преобразования типов.
Четвертый конструктор указывает копию набора right .
Следующие три конструктора используют initializer_list, чтобы указать элементы.
Следующие три конструктора копируют диапазон [ first , last ) набора с увеличением явной точности при указании типа функции сравнения класса Traits и Allocator .
Восьмой конструктор указывает копию набора путем перемещения right .
Пример
Возвращает количество элементов в наборе.
Возвращаемое значение
Текущая длина набора.
Пример
size_type
Тип целого числа без знака, который может представлять число элементов в наборе.
Пример
См. пример size объявления и использования size_type
Обмен элементами между двумя наборами.
Параметры
right
Набор-аргумент предоставляет элементы для обмена с целевым набором.
Remarks
Функция-член не делает недействительными никакие ссылки, указатели или итераторы, обозначающие элементы в двух наборах, между которыми выполняется обмен элементами.
Пример
upper_bound
Возвращает итератор, указывающий на первый элемент в наборе с ключом, который больше указанного ключа.
Параметры
key
Ключ-аргумент, который будет сравниваться с ключом сортировки элемента из набора, в котором выполняется поиск.
Возвращаемое значение
Объект iterator или const_iterator , который обращается к расположению элемента в наборе, который имеет ключ, превышающий ключ, или который обращается к расположению, следующему за последним элементом в наборе, если совпадение для ключа не найдено.
Пример
value_comp
Извлекает копию объекта сравнения, который используется для упорядочивания значений элементов в наборе.
Возвращаемое значение
Возвращает объект-функцию, которую набор использует для упорядочивания своих элементов, что является параметром-шаблоном Traits .
Дополнительные сведения о Traits см. в разделе о set классе .
Remarks
Сохраненный объект определяет функцию-член:
возвращающий значение, true Если _xVal _yVal в порядке сортировки предшествует и не равны.
value_compare И key_compare являются синонимами для параметра шаблона Traits . Оба типа предоставляются для классов наборов и мультинаборов, где они идентичны, для совместимости с классами Map и multimap, где они отличаются.
Пример
value_compare
Тип, предоставляющий объект функции, который может сравнить значениях двух элементов, чтобы определить их относительный порядок в наборе.
Remarks
value_compare является синонимом для параметра-шаблона Traits .
Дополнительные сведения о Traits см. в разделе о set классе .
key_compare И value_compare являются синонимами для параметра шаблона Traits . Оба типа предоставляются для классов наборов и мультинаборов, где они идентичны, для совместимости с классами Map и multimap, где они отличаются.
Пример
value_comp Пример объявления и использования см. в примере для value_compare .
value_type
Тип, описывающий объект, который сохранен как элемент набора в смысле его возможностей, присущих значению.
Remarks
value_type является синонимом для параметра-шаблона Key .
Дополнительные сведения о см Key . в подразделе «Примечания» статьи о set классе .
key_type И value_type являются синонимами для параметра шаблона Key . Оба типа предоставляются для классов наборов и мультинаборов, где они идентичны, для совместимости с классами Map и multimap, где они отличаются.
Источник