Шаблон класса sg_set является интрузивным контейнером, который имитирует большую часть интерфейса std::sg_set, как описано в стандарте C++.
Параметр шаблона T - это тип, которым должен управлять контейнер. Пользователь может указать дополнительные опции и если не предусмотрены параметры по умолчанию.
Контейнер поддерживает следующие варианты: base_hook<>/member_hook<>/value_traits<>, floating_point<>, size_type<> и compare<>.
sg_set
public
construct/copy/destruct
sg_set();
Effects: Constructs an empty container.
Complexity: Constant.
>>
Throws
: Если value_traitsnode_traitsarerusare_traits::node конструкторы (это не происходит с крюкомпозицией). Базовая гарантия.
Effects: Detaches all elements from this. Объекты в наборе не удаляются (т. е. не называются деструкторами), но узлы в соответствии с параметром шаблона value_traits являются восстановленными и, таким образом, могут быть повторно использованы.
комплексность: Линейный к элементам, содержащимся в *это.
Throws: Ничего.
sg_set public member functions
iteratorbegin();
Effects: Returns an iterator indicating to the beginning of the container.
Complexity: Constant.
Throws Ничего.
const_iteratorbegin()const;
Effects: Returns a const_iterator, указывающий на начало контейнера.
Complexity: Constant.
Throw
const_iteratorcbegin()const;
Effects: Returns a const_iterator, указывающий на начало контейнера.
Complexity: Constant.
<1718>
iteratorend();
Effects: Returns an iterator indicating to the end of the container.
Complexity: Constant.
Throws: Nothing.
const_iteratorend()const;
Effects: Returns a const_iterator указывающий на конец контейнера.
Complexity: Constant.
ThrowsНичего не >>>>>>>
const_iteratorcend()const;
Effects: Returns a const_iterator, указывающий на конец контейнера.
Complexity: Constant.
Throw
reverse_iteratorrbegin();
Effects: Returns a reverse_iterator указывающий на начало обратного контейнера.
Complexity: Constant.
Throws<172> Ничего.
const_reverse_iteratorrbegin()const;
Effects: Returns a const_reverse_iterator указывающий на начало обратного контейнера.
Complexity: Constant.
const_reverse_iteratorcrbegin()const;
Effects: Returns a const_reverse_iterator указывающий на начало обратного контейнера.
Complexity: Constant.
reverse_iteratorrend();
Effects: Returns a reverse_iterator, указывающий на конец обратного контейнера.
Complexity: Constant.
Throws
const_reverse_iteratorrend()const;
Effects: Returns a const_reverse_iterator указывающий на конец обратного контейнера.
complexity: Constant.
const_reverse_iteratorcrend()const;
Effects: Returns a const_reverse_iterator указывающий на конец обратного контейнера.
complexity: Constant.
iteratorroot();
Effects: Returns a iterator indicating to the root node of the container or end() if not present.
Complexity: Constant.
Throws<172> Ничего.
const_iteratorroot()const;
Effects: Returns a const_iterator указывающий на корневой узел контейнера или cend() если не присутствует.
Complexity: Constant.
const_iteratorcroot()const;
Effects: Returns a const_iterator указывающий на корневой узел контейнера или cend() если не присутствует.
Complexity: Constant.
key_comparekey_comp()const;
Effects: Returns the key_compare object used by the container.
Complex: Constant.
Throws>>>>>> Если Key_compare выбрасывает копи-конструктор.
value_compare value_comp()const;
Effects: Returns the value_compare object used by the container.
Complex: Constant.
Throws>>>>> Если value_compare copy-constructor бросает.
boolпустая()const;
Следы: возвраты верны, если контейнер пуст.
Complexity: Constant.
Throws
size_typesize()const;
Effects: Возвращает количество элементов, хранящихся в контейнере.
Complexity: Линейный к элементам, содержащимся в *это при отключении варианта постоянного времени. Постоянное время в противном случае.
Следы: Erases all the elements from *This call Disposer::operator() (pointer), клонирует все элементы из src, звонящего Cloner::operator() (const_reference) и вставляет их на *это.
Комплексность: Линейный для стерты плюс вставленные элементы.
Throws: Если клонист бросает или предикатирует присвоение копий. Базовая гарантия. Дополнительные примечания: он также копирует альфа-фактор из исходного контейнера.
Шаблон>voidclone_from(sg_set>>>>>>>%2> Cloner должен уступить узлам, эквивалентным исходным узлам.
Следы: Erases all the elements from *This call Disposer::operator() (pointer), клонирует все элементы из src call Cloner::operator (reference) и вставляет их на *это.
<340>Комплексность
: Линейный для стерты плюс вставленные элементы.
<340>Throws
: Если клонист бросает или предикатное копирование. Базовая гарантия.
Note: Эта версия может изменить исходный контейнер, полезный для реализации семантики перемещения. Дополнительные примечания: он также копирует альфа-фактор из исходного контейнера.
Средние ссылки> >>>>> >> >>> >>> >> >>332> >>>2> >>>2>>>>>>>>>>>>>>>>>>2>>>>>2>>>2>>>>>30>>30>>>30> Никаких копирайтеров не называют.
>>>>>>>>>>>>2>>>>>>>>>2>20>
>20>20>000>0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Никаких копирайтеров не называют.
> > > >>> > >>>> >> > > > > >>> >>> >>> >>>>>> >> >> >>> Если значение может быть добавлено, то оно верно в возвратной паре боролеана и заполняет «commit_data», которая предназначена для использования с функцией «insert_commit».
Complexity: Средняя сложность в большинстве логарифмических.
Throws: Если функция композаказания бросается. Сильная гарантия.
> >> >> >>> >>> 18>>> >> > >> >> > >> >>>> Если значение может быть добавлено, то оно верно в возвратной паре боролеана и заполняет «commit_data», которая предназначена для использования с функцией «insert_commit».
Complexity: Logarithmic в целом, но это амортизированное постоянное время, если t вставляется непосредственно перед подсказкой.
Throws: Если функция компоринга бросается. Сильная гарантия.
template<имя типа > >> > > > >> >> >> > >> > >>>>>>>>>>>>> Различие заключается в том, что комп сравнивает произвольный ключ с содержащимися значениями.
Следы: Проверяет, может ли значение быть вставлено в контейнер, используя предоставленный пользователем ключ вместо самого значения.
Возвращения: Если есть эквивалентное значение возвращает пару, содержащую итератор, к уже существующему значению и ложному. Если значение может быть добавлено, то оно верно в возвратной паре боролеана и заполняет «commit_data», которая предназначена для использования с функцией «insert_commit».
Сложность: Средняя сложность в большинстве логарифмических.
Throws: Если функция композаказывания бросается. Сильная гарантия.
Заметки: Эта функция используется для улучшения производительности при построении значения_типа дорого: если есть эквивалентное значение, то построенный объект должен быть отброшен. Много раз часть узла, которая используется для наложения заказа, намного дешевле для построения, чем тип value_, и эта функция предлагает возможность использовать эту часть, чтобы проверить, будет ли вставка успешной.
Если проверка успешена, пользователь может конструировать значение_type и использовать "insert_commit" для вставки объекта в постоянное время. Это дает полную логарифмическую сложность для вставки: check(O(log(N)) + commit(O(1)).
"commit_data" остается действительным для последующего "insert_commit" только в том случае, если больше объектов не вставлены или стерты из контейнера.
template<имя типа> > > > >>> >>> >>> >> >> >>> > > > >>> >>>>>>>> >> > >> Различие заключается в том, что комп сравнивает произвольный ключ с содержащимися значениями.
Следы: Проверяет, может ли значение быть вставлено в контейнер, используя предоставленный пользователем ключ вместо самого значения, используя «синт» в качестве намека на то, где он будет вставлен.
Возвращение: Если есть эквивалентное значение возвращает пару, содержащую итератор, к уже существующему значению и ложному. Если значение может быть добавлено, то оно верно в возвратной паре боролеана и заполняет «commit_data», которая предназначена для использования с функцией «insert_commit».
Complexity: Logarithmic в целом, но это амортизированное постоянное время, если t вставляется непосредственно перед подсказкой.
Throws: Если функция компоринга бросается. Сильная гарантия.
Заметки: Эта функция используется для улучшения производительности при построении значения_типа дорого: если есть эквивалентное значение, то построенный объект должен быть отброшен. Много раз часть конструкции, которая используется для наложения заказа, намного дешевле для построения, чем тип value_, и эта функция предлагает возможность использовать этот ключ, чтобы проверить, будет ли вставка успешной.
Если проверка успешена, пользователь может построить параметр value_type и использовать "insert_commit" для вставки объекта в постоянное время. Это может дать полную сложность постоянного времени для вставки: check(O(1)) + commit(O(1)).
"commit_data" остается действительным для последующего "insert_commit" только в том случае, если больше объектов не вставлены или стерты из контейнера.
Requires: значение должно быть значением l value_type. commit_data, должно быть, был получен из предыдущего звонка на «insert_check».
>
Ревки: Вставка значения в контейнере с помощью информации, полученной из "commit_data", которую заполнили предыдущие "insert_check".
>>РевацииИсполнители: Итератор для вновь вставленного объекта.
>>>>>>> Никакое значение не должно быть вставлено или стерто между вызовами "insert_check" и "insert_commit".
>> 1>insert_ before (const_iterator pos,reference value7>;
Requires: значение должно быть l value, "pos" должен быть действительным итератором (или концом) и должен быть успецесором значения, вставленным в соответствии с предикатом
>>>
>>>>
>>>>>>
>>>>>
>>>>>>>>> Это низкоуровневая функция, которая будет использоваться только по причинам производительности продвинутыми пользователями.
voidpush_back(reference value);
Requires: значение должно быть l value, и оно должно быть не меньше, чем наибольший вставленный ключ
Effects
Эта функция немного более эффективна, чем использование «insert_ before». Это низкоуровневая функция, которая будет использоваться только по причинам производительности продвинутыми пользователями.
voidpush_front(reference value);
Requires: значение должно быть l value, и оно должно быть не больше, чем минимальный вставленный ключ
Effects Эта функция немного более эффективна, чем использование «insert_ before». Это низкоуровневая функция, которая будет использоваться только по причинам производительности продвинутыми пользователями.
iteratorerase(const_iterator i);
Effects: Erases элемент, на который указывает i.
Complexity Средняя сложность для стерточного элемента - постоянное время.
>>>>>>>>>3>>>>>>>>>>>>>>3>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>3>>>>>>>>3>>>>>>>>>>>>>>3>>>>>>>>>>>>>>>>>3>>>>>>>>3>>>>>> Находится диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, где эти элементы будут, если нет элементов с ключом k.
<336>Сложность
: Logarithmic.
Throws: Если key_compare бросить.
template<имя типа>> > >>> > >> >>>> > > > > >>>>>>>>>> Находится диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, где эти элементы будут, если нет элементов с ключом k.
Requires: replace_ this must be a valid iterator of *this and with_this must not be included in any container.
Eff>< Контейнер не нуждается в перебалансировке.
Комплексность: Постоян.
Throws: Nothing.
Note: Данная функция будет нарушать порядок контейнера инвариантов, если с_это не эквивалентно *заменить это согласно правилам заказа. Эта функция быстрее, чем стирание и вставка узла, поскольку не требуется перебалансировки или сравнения.
voidremove_node(reference value);
Effects: удалить "значение" из контейнера.
Throws: Nothing.
voidбаланс();
Следы: Ребалансы дерево.
Throws: Nothing.
Complexity: Linear.
1>2> > re balance_subtree(iterator root);
Requires: old_root является узлом дерева.
Effects
floatбаланс_factor()const;
Returns: Баланс-фактор (альфа) используется в этом дереве
Throws: Nothing.
Комплексность
voidбаланс_factor(float new_alpha);
Требуются: new_alpha должно быть значением между 0.5 и 1.0
Effects: устанавливает новый баланс (alpha) и rerow><
<класс... Варианты2>void15>merge(sg_set<T, Если есть элемент в ключе, эквивалентном ключу элемента из источника, то этот элемент не извлекается из источника.
Почтовые условия: Указательные элементы и ссылки на переданные элементы источника относятся к тем же элементам, но как члены *это. Итераторы, относящиеся к переданным элементам, будут продолжать ссылаться на их элементы, но теперь они ведут себя как итераторы в *это, а не в источник.
Throws: Ничего, если объект сравнения не бросает.
Сложность: N log(a.size() + N) (N имеет источник значений.size()
Requires: значение должно быть l value и должно быть в наборе соответствующего типа. В противном случае поведение не определено.
Следы: Возврат: действительный итератор i, принадлежащий к набору, который указывает на значение
Сложность: Постоян.
Throws: Ничего.
Ноте: Эта статическая функция доступна только в том случае, если >>
статическийvoidinit_node(reference value);
<120>Requires: значение не должно быть в контейнере.
20>Следы>
Статья Class template sg_set раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.