- iteratorbegin; - : Возвращает итератор, указывающий на начало контейнера. - Сложность: Константа. - Броски: Ничего.  
- const_iteratorbegin()const; - :Возвращает const_iterator, указывающий на начало контейнера. - :Константа. - Броски: Ничего.  
- const_iteratorcbegin()const; - : Возвращает const_iterator, указывающий на начало контейнера. - : Constant. - Броски: Ничего.  
- iteratorend; - : Возвращает итератор, указывающий на конец контейнера. -  Сложность: Константа. - Броски: Ничего.  
- const_iteratorend()const; - : Возвращает const_iterator, указывающий на конец контейнера. - :Константа. - Броски: Ничего.  
- const_iteratorcend()const; - : Возвращает const_iterator, указывающий на конец контейнера. - : Constant. - Броски: Ничего.  
- reverse_iteratorrbegin; - : Возвращает обратный_iterator, указывающий на начало обратного контейнера. -  Сложность: Константа. - Броски: Ничего.  
- const_reverse_iterator rbegin()const; - : Возвращает const_reverse_iterator, указывающий на начало обратного контейнера. - : Constant. - Броски: Ничего.  
- const_reverse_iteratorcrbegin()const; - : Возвращает const_reverse_iterator, указывающий на начало обратного контейнера. - : Constant. - Броски: Ничего.  
- reverse_iteratorrend; - : Возвращает обратный_iterator, указывающий на конец обратного контейнера. -  Сложность: Константа. - Броски: Ничего.  
- const_reverse_iteratorrend()const; - : Возвращает const_reverse_iterator, указывающий на конец обратного контейнера. - : Constant. - Броски: Ничего.  
- const_reverse_iteratorcrend()const; - : Возвращает конст_reverse_iterator, указывающий на конец обратного контейнера. - : Constant. - Броски: Ничего.  
- iteratorroot; - : Возвращает итератор, указывающий на корневой узел контейнера или конец(), если он не присутствует. - : Сложность: Константа. - Броски: Ничего.  
- const_iteratorrootconst; - : Возвращает конст_iterator, указывающий на корневой узел контейнера или кенд(), если его нет. - : Constant. - Броски: Ничего.  
- const_iteratorcrootconst; - : Возвращает конст_iterator, указывающий на корневой узел контейнера или кенд(), если его нет. - : Constant. - Броски: Ничего.  
- key_comparekey_comp()const; - :Возвращает ключ_compare объект, используемый контейнером. - :Константа. - Броски: Если бросит key_compare копи-конструктор.  
- value_comparevalue_comp()const; - : Возвращает значение_compare объект, используемый контейнером. - : Constant. - Броски: Если value_compare копи-конструктор бросает.  
- boolempty()const; - : Эффекты: Возвращается верно, если контейнер пуст. - :Константа. - Броски: Ничего.  
- size_typesizeconst; - : Возвращает количество элементов, хранящихся в контейнере. - : Сложность: Линейность к элементам, содержащимся в *это, если опция постоянного размера отключена. Постоянное время иначе. -  Броски: Ничего.  
- voidswap(splay_multiset& other); - : Эффекты: Замена содержимого двух контейнеров. - :Константа. - Броски: Если сравнительный своп функтора бросает вызов.  
- templatetypename Cloner, typename Disposer> voidclone_from(constsplay_multiset & src, Cloner disposer); - : Disposer::operator()(pointer) не должен бросать. Клонер должен уступить узлам, эквивалентным исходным узлам. - Последствия: Стирает все элементы из *этого вызывающего Диспозитора::оператор()(указатель), клонирует все элементы из src вызывающего Клонера::оператор()(const_reference) и вставляет их на *это. Копии предиката из исходного контейнера. -  Если клонер бросает, все клонированные элементы несвязаны и расположены, вызывая Диспозитор::оператор()(указатель). -  Сложность: Линейный стертый плюс вставленные элементы. -  Броски: Если клонер бросает или предикат копирования, задание бросает. Базовая гарантия. Дополнительные примечания: он также копирует альфа-фактор из исходного контейнера.  
- templatetypename Cloner, typename Disposer> voidclone_from(splay_multiset && src, Cloner disposer;; - : Disposer::operator()(pointer) не должен бросать. Клонер должен уступить узлам, эквивалентным исходным узлам. -  Эффекты: Стирает все элементы из *этого вызывающего Диспозитора::оператор()(указатель), клонирует все элементы из src вызывающего Клонера::оператор()(ссылка) и вставляет их на *это. Копии предиката из исходного контейнера. -  Если клонированный элемент бросает, все клонированные элементы являются несвязанными и расположены, вызывая Disposer::operator()(pointer). - Комплексность: Линейный стертый плюс вставленные элементы. - Броски: Если клонер бросает или предикат копирует присвоение бросков. Основная гарантия. - Примечание : Данная версия может модифицировать исходный контейнер, полезный для реализации семантики перемещения.  
- итераторвставить(ссылказначение; - Требования: Значение должно быть lvalue - :Последствия:Вставить значение в контейнер перед верхней границей. - Средняя сложность для вставочного элемента является наиболее логарифмической. - Броски: Если выполняется внутренняя функция key_compare ordering. Сильная гарантия. - Примечание: Не влияет на действительность итераторов и ссылок. Копировальными конструкторами не называются.  
- iteratorinsertconst_iterator hint,referencevalue; - : Значение должно быть lvalue, а "hint" должен быть действительным итератором. - : Вставьте x в контейнер, используя "hint" в качестве подсказки, куда он будет вставлен. Если «подсказка» является верхним_связанным, вставка занимает постоянное время (два сравнения в худшем случае) -  Сложность: Логарифмическая в целом, но это амортизированное постоянное время, если t вставлен непосредственно перед подсказкой. -  Броски: Если внутренняя клавиша_сравните функцию упорядочивания бросает. Сильная гарантия. - Примечание : Не влияет на действительность итераторов и ссылок. Копировальными конструкторами не называются.  
- templatetypenameIterator>void(Iteratorb,Iteratore; - : Относительный итератор должен давать lvalue of type value_type. - : Вставляет каждый элемент диапазона в контейнер перед верхней границей ключа каждого элемента. - : Вставка диапазона в общем O(N* log(N)), где N - размер диапазона. Однако он является линейным в N, если диапазон уже отсортирован по значению_comp(). - Броски: Ничего. - Примечание: Не влияет на валидность итераторов и ссылок. Копировальными конструкторами не называются.  
- iteratorinert_beforeconst_iterator pos,referencevalue;- : Значение должно быть lvalue, "pos" должен быть действительным итератором (или концом) и должен быть сукцессатором значения после вставки в соответствии с предикатом - : Сложность: Постоянное время. - : Ничто. - Примечание: Если "pos" не является преемником инварианта упорядочивания контейнера "value" будет нарушено. Это низкоуровневая функция, которая используется только для повышения производительности продвинутыми пользователями.  
 
- voidpush_back(ссылказначение; - : Значение должно быть lvalue, и оно должно быть не меньше наибольшего вставленного ключа - : Эффекты  - Комплексность: Постоянное время. - :Ничего. - Примечание: Если значение меньше наибольшего вставленного инварианта упорядочивания ключа будет нарушено. Эта функция немного более эффективна, чем использование «insert_before». Это низкоуровневая функция, которая используется только для повышения производительности продвинутыми пользователями.  
- voidpush_front(ссылка значение; - : Значение должно быть lvalue, и оно должно быть не больше минимального вставленного ключа - : Эффекты: Вставка x в контейнер в первом положении. - : Постоянное время. - : Ничего. - Примечание: Если значение больше минимального вставленного инварианта упорядочивания ключа будет нарушено. Эта функция немного более эффективна, чем использование «insert_before». Это низкоуровневая функция, которая используется только для повышения производительности продвинутыми пользователями.  
- iteratorerase(const_iterator i; - : Стирает элемент, на который указывает i. - : Средняя сложность для элемента стирания является постоянным временем. - :Ничего. - Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.  
- iteratoreraseconst_iterator b,const_iterator e; : Стирает диапазон, указанный на конце b.- : Средняя сложность для диапазона стирания составляет самое большее O(log(size()+N)), где N - число элементов в диапазоне. - : Ничто. - : Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.  
- size_typeerasekey_typeключ- : Стирает все элементы с заданным значением. - : Количество стертых элементов. - : O(log(size() + N) - : Ничего. - : Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.  
 
- template<typename KeyType, typename KeyTypeKeyCompare> size_typeerase & KeyTypeKeyCompare; - : Требуется : ключ такой, что - *этоозначает !comp(ключ, nk), с nk ключом (ключ, nk), с nk ключом_типом значения_типа, вставленным в - : Стирает все элементы с заданным ключом. Согласно сравнительным функторам "комп". - : Количество стертых элементов. -  Сложность: O(log(size() + N). -  Броски: Ничего. - Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.  
- templatetypename>erase_and_dispose,const_iterator i,- : Disposer::оператор(): Стирает элемент, на который указывает i. Disposer::оператор(): Средняя сложность для стираемого элемента составляет постоянное время. - : Ничто. - : Инвалидирует итераторы в стертые элементы.  
 
- templatetypenameerase_and_dispose,const_iterator e,const_iterator e,- : Требуется : Диспозитор::оператор() : Эффекты : Диспозитор::оператор(): Средняя сложность для диапазона стирания составляет максимум O(log(size()+34), где N - число элементов в диапазоне. - :Note: Инвалидирует итераторы в стертые элементы.  
 
- templatetypename Disposer> size_typeerase_and_disposekey_type & Key,  Disposer disposer; : Disposer::operator()(pointer):37>- : Стирает все элементы с заданным значением. Диспетчер::оператор()(указатель) вызывается для удаленных элементов. - : Количество стертых элементов. - : O(log(size() + N). -  Броски: Ничего. - Примечание: Недействительность итераторов (но не ссылок) на стертые элементы. Деструкторы не называются.  
- template KeyType, typename KeyTypeKeyCompare,erase_и_disposeKeyTypeKeyCompare,KeyTypeKeyComparecompare,Disposer disposer, - Ключ, обозначающий !comp(ключ, nk) и !comp(ключ, nk) с указанием !comp(ключ, nk) и nk ключ_тип значения_типа, вставленный в - this.
 - Эффекты: Стирает все элементы с заданным ключом. по сравнению с функтором «комп». Диспозитор::оператор()(указатель) вызывается для удаленных элементов. - : Количество стертых элементов. - : O(log(size() + N) - : Броски: Ничего. - Примечание: Инвалидирует итераторы на стертые элементы.  
- voidclear; - : Эффекты: Стирает все элементы. - Комплексность: Линейное количество элементов на контейнере. Если это безопасный режим или авто-разъединить значение_тип. Постоянное время в противном случае. -  Броски: Ничего. - Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.  
- templatetypename Disposer> voidclear_and_dispose( disposer); - Эффекты: Уничтожает все элементы, вызывающие disposer(p) для каждого узла, который должен быть удален. Комплексность: Средняя сложность для максимум O(log(size() + N)), где N - количество элементов в контейнере. - Броски: Ничего. - Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Звонки N раз для удаления функтора.  
- size_typecount(constkey_type); : Возвращает число содержащихся элементов с заданным значением- : Логарифмическая к числу содержащихся элементов плюс линейная к числу объектов с заданным значением. -  Броски: Если - key_compareбросает. Дополнительное примечание: выполняется неконст-функция, игра.
 
- template<typename KeyType, typename KeyTypeKeyCompare>Счетconst&,; Требует Требует :Ключ  разделен по отношению к comp(nk, key) и !comp(ключ, nk), причем comp(nk, key) подразумевает !comp(ключ, nk) и nk ключ_тип значения_type, вставленный в- :Логарифмическая по количеству содержащихся элементов плюс линейная по количеству объектов с данным ключом. - Броски: Если - compбросает. Дополнительное примечание: функция const, отсутствие игры
 
- iteratorlower_bound(constkey_type;; : Возвращает итератор к первому элементу, ключ которого не меньше k или конца() если этот элемент не существует.- : Logarithmic. - Броски: Если - key_compareбросает. Дополнительное примечание: выполняется неконст-функция, игра.
 
- template<typename KeyType, typename KeyTypeKeyCompare> iteratorlower_bound( &KeyTypeKeyCompare); Возвращает итератор к первому элементу, ключ которого не меньше k или конца() если этот элемент не существует.- : Logarithmic. - Броски: Если - key_compareбросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «ключ»
 
- const_iteratorlower_bound(key_type &const; - Возвращает итератор к первому элементу, ключ которого не меньше k или конца() если этот элемент не существует. - : Logarithmic. - Броски: Если - key_compareбросает. Дополнительное примечание: функция const, отсутствие игры
 
- template<typename KeyType, typename KeyTypeKeyCompare> const_iteratorlower_bound(const ,KeyTypeKeyComparecompare)const; - : Возвращает итератор к первому элементу, ключ которого не меньше k или конца() если этот элемент не существует. - : Logarithmic. - Броски: Если - key_compareбросает. Дополнительное примечание: функция const, отсутствие игры
 
- iteratorupper_bound(constkey_type;; : Возвращает итератор к первому элементу, чей ключ больше k или конца() если этот элемент не существует.- : Logarithmic. - Броски: Если - key_compareбросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «значения»
 
- template<typename KeyType, typename KeyTypeKeyCompare> iteratorupper_boundconst &,KeyTypeKeyCompare; Требуется : ключ такой, что- *этовставляется в- *это.- Комплексность:Броски: Если - compбросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «ключ»
 
- const_iteratorupper_bound(key_type &const; - : Возвращает итератор к первому элементу, чей ключ больше k или конца() если этот элемент не существует. - : Logarithmic. - Броски: Если - key_compareбросает. Дополнительное примечание: функция const, отсутствие игры
 
- template<typename KeyType, typename KeyTypeKeyCompare>constconst &,constcompare; - : Ключ является таким значением, что - *этовставляется в- *это.
 - Комплексность:Броски: Если - compбросает. Дополнительное примечание: функция const, отсутствие игры
 
- iterator find(const key_type & key); - Effects: Найден итератор к первому элементу, ключ которого k или конец(), если этот элемент не существует. -  Сложность: Логарифмический. -  Броски: Если - key_compareбросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «значения»
 
- template<typename KeyType, typename KeyTypeKeyCompare>iteratorconst &,; Требуется : ключ таков, что- *этоозначает !comp(ключ, nk), а nk - ключ_тип значения_типа, вставленный в- КомплексностьБроски: Если - компбросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «ключ»
 
- const_iteratorfindconst &const; - ПоследствияПолучает итератор к первому элементу, ключ которого k или конец() если этот элемент не существует. - :Логарифмический. - Броски:Если - key_compareбросает. Дополнительное примечание: функция const, отсутствие игры
 
- template<typename KeyType, typename KeyTypeKeyCompare> const & , const;const; - : Ключ является таким значением, что - *этоозначает !comp(ключ, nk), а nk - ключ_тип значения_типа, вставленный в - Комплексность: Броски : Если - compбросает. Дополнительное примечание: функция const, отсутствие игры
 
- std:: iterator, iterator > equal_range(const key_type &; - : Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, где эти элементы были бы, если у них нет элементов с ключом k. -    Сложность  : Логарифмический. -    Броски  : Если - key_compareбросает. Дополнительное примечание: неконст-функция, игра выполняется для первого элемента равного диапазона «значения»
 
- template<typename KeyType, typename KeyTypeKeyCompare>std,iteratorEqual_rangeconst &,KeyTypeKeyCompare,;- : Ключ является таким значением, что - *это означает !comp(ключ, nk), с !comp(ключ, nk), с !comp(ключ, nk), с !comp(ключ, nk), с !comp(ключ, nk), с !comp(ключ, nk), с !comp(ключ, nk), с nk ключ_тип значения_тип вставлен в- Влияние : Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, где эти элементы были бы, если у них нет элементов с ключом k.
 -    Сложность  : Логарифмический. -    Броски : Если - компбросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «ключ»
 
 
- std::const_iterator, const_iterator equal_rangekey_type &const;const;; Эффекты: Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, в котором эти элементы были бы, если бы у них не было элементов с ключом k.- : Logarithmic. - : Броски: Если - key_compareбросает. Дополнительное примечание: функция const не выполняется
 
- template<typename KeyType, typename KeyTypeKeyCompare> , const_iterator (&KeyTypeKeyCompare,const;const; - :Ключ :Ключ  означает !comp(ключ, nk), с !comp(ключ, nk), с nk ключом_типа значения_типа, вставленного в  - Комплексность :Если - compбросает. Дополнительное примечание: функция const, отсутствие игры
 
- std:: iteratorbounded_rangeconst_reference lower_value, bool left_closed, boolright_closed; :- lower_keyдолжен быть ложным>51>- Если - lower_keyэквивалентен- upper_key[!key_key, lower_key] &&!key_comp()(lower_key, upper_key)], то ('left_closed' | |right_closed').
 - : Возвращает пару со следующими критериями: - первый = low_bound(lower_key) в случае left_closed, upper_bound(lower_key) в противном случае -  второй = upper_bound(upper_key) в случае right_closed, lower_bound(upper_key) в противном случае - : Сложность: Logarithmic. -  Броски: Если - key_compareбросает.
 - Примечание: Эта функция может быть более эффективной, чем вызов upper_bound и lower_bound для low_value и upper_value. - Примечание: Экспериментальная функция, интерфейс может измениться в будущих выпусках.  
- template<typename KeyType, typename KeyTypeKeyCompare>pair,bounded_range, lower_key, top_key, left_closed, boolleft_closed, boolleft_closed,: - lower_keyявляется значением, таким, что- upper_key, nk>, если правый_closed верен, по отношению к !comp(nk, upper_key, nk) если правый_closed верен, по отношению к !comp(nk, upper_key, nk) если правый_closed верен, по отношению к !comp(nk, upper_key, nk  - : Возвращает пару со следующими критериями:  - first = lower_bound(lower_key, comp) if left_closed, upper_bound(lower_key, comp) в противном случае -   -  Сложность: Logarithmic. - : Если - compбросает.
 - NoteNote: Экспериментальная функция интерфейса может измениться в будущих выпусках.  
 
- std::const_iterator, bounded_range(const_reference lower_value, bool left_closed) const; - : - lower_keyдолжен быть ложным>53>
 - Если - lower_keyэквивалентен- upper_key()(upper_key, lower_key) &&!key_comp() тогда ('left_closed' | |right_closed) 
 - : Возвращает пару со следующими критериями:  - first = low_bound(lower_key) if left_closed, upper_bound(lower_key) else - second = upper_bound(upper_key) if right_closed, lower_bound(upper_key) if right_44>: Logarithmic. - Броски: Если - key_compareброски.
 - ПримечаниеПримечание: Экспериментальная функция интерфейса может измениться в будущих выпусках.  
- template<typename KeyType, typename KeyTypeKeyCompare>pair,bounded_range, low_key, top_key, left_closed, bool left_closed,  bool right_closed, const: - lower_keyявляется таким значением, что- upper_key, nk>, если правый_closed верен, по отношению к !comp(upper_key, upper_key) истинно, по отношению к !comp(nk, upper_key, nk) истинно, по отношению к !comp(nk, upper_key 
- lower_keyпо- : Возвращает пару со следующими критериями:  - first = low_bound(lower_key, comp) if left_closed, upper_bound(lower_key, comp) otherwise -  second = upper_bound(upper_key, comp) if right_closed, lower_bound(upper_key, comp) if right_closed, lower_bound(upper_key, comp) if else - : Logarithmic. - Brows: If - compthrows.
 - Note: Эта функция может быть более эффективной, чем вызов upper_bound и lower_bound для low_key и upper_key. - Note: Экспериментальная функция интерфейса может измениться в будущих выпусках.  
 
- iterator iterator_to(ссылказначение); - Значение должно быть lvalue и должно быть в наборе соответствующего типа. В противном случае поведение не определено. - Последствия: Возврат: действительный итератор i, принадлежащий набору, который указывает на значение  - Сложность:Константа. - Броски: Ничего.  
- const_iteratoriterator_to(const_referencevalue)const; - : Значение должно быть lvalue и должно быть в наборе соответствующего типа. В противном случае поведение не определено. - Последствия: Возврат: действительный const_iterator i, принадлежащий набору, который указывает на значение  - Комплексность: Константа. - Броски: Ничего.  
- pointerunlink_leftmost_without_rebalance; - : Отключает левый узел от контейнера. - : Средняя сложность составляет постоянное время. - : Ничего. - Примечания: Эта функция разбивает контейнер и контейнер можно использовать только для большего количества вызовов unlink_leftmost_without_rebalance. Эта функция обычно используется для достижения поэтапного контролируемого разрушения контейнера.  
- voidreplace_node(iterator replace_this, reference with_this; - :Requires: replace_this должен быть действительным итератором *this и с_this не должен быть вставлен ни в один контейнер. - : Заменить_this в его положении в контейнере с_this. Контейнер не нуждается в перебалансировке. - : Constant. - Броски: Ничего. - Примечание: Эта функция будет нарушать инварианты упорядочивания контейнера, если с_это не эквивалентно *заменить_это в соответствии с правилами упорядочивания. Эта функция быстрее, чем стирание и вставка узла, поскольку не требуется перебалансировки или сравнения.  
- voidremove_node; - : удаляет "значение" из контейнера. - : Ничего. - : Сложность: Логарифмическое время. - Примечание: Если пользователь называет эту функцию контейнером с постоянным размером времени или константным сравнительным функтором, будет выпущена ошибка компиляции.  
- void(iterator i); - : Я должен быть действительным итератором :  - : Эффекты: Эффекты : Помещает элемент, указанный i, в корень дерева, улучшая будущие поиски этого значения. - : Амортизированный логарифм. - Броски: Ничего.  
- template<typename KeyType, typename KeyTypeKeyCompare> iteratorsplay_down(const KeyType , KeyTypeKeyComparecompare); Воздействие : Если в контейнере хранится элемент с ключом, эквивалентным значению, элемент помещается в качестве корня дерева. Если элемент отсутствует, возвращается последний узел по сравнению с ключом. Если дерево пустое, конец() возвращается.-  Сложность: Амортизированный логарифм. - : Возвращается: Итератор к новому корню дерева, конец() если дерево пустое. -  Бросает: Если бросает сравнительный функтор.  
- iteratorsplay_downconst key_type &; - : Эффекты: Если в контейнере хранится элемент с ключом, эквивалентным значению, элемент помещается в качестве корня дерева. - : Amortized logarithmic. - : Итератор к новому корню дерева, конец() если дерево пустое. - : Если предикат бросает.  
- void rebalance(); - Последствия: Дерево. - Броски: Ничего. - Сложность: Линейный. 
- iteratorrebalance_subtreeiterator root; - : old_root является узлом дерева. - : Rebalances the subtree rooted at old_root. - : The new root of the subtree. - : Nothing. - Комплексность: Линейные элементы в поддереве.  
- templateclass...voidmerge<T...>>;: Опции контейнера «источник» могут отличаться только функцией сравнения от *это.- : Указатели и ссылки на переданные элементы источника относятся к тем же элементам, но как к членам *это. Итераторы, относящиеся к переданным элементам, будут продолжать ссылаться на их элементы, но теперь они ведут себя как итераторы в * это, а не в источник. -    Броски : Ничего, если объект сравнения не бросает. -    Сложность : N log(a.size() + N) (N имеет значение source.size())  
 
- template... Options2>merge<T...>>;: Опции контейнера «источник» могут отличаться только функцией сравнения от *это.- : Указатели и ссылки на переданные элементы источника относятся к тем же элементам, но как к членам *это. Итераторы, относящиеся к переданным элементам, будут продолжать ссылаться на их элементы, но теперь они ведут себя как итераторы в * это, а не в источник. -    Броски : Ничего, если объект сравнения не бросает. -    Сложность : N log(a.size() + N) (N имеет значение source.size())