Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Class template splay_multiset

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Class template splay_multiset

boost::intrusive::splay_multiset

Synopsis

// In header: <boost/intrusive/splay_set.hpp>
template<typename T, class... Options> 
class splay_multiset {
public:
  // types
  typedef implementation_defined::value_type             value_type;            
  typedef implementation_defined::key_type               key_type;              
  typedef implementation_defined::key_of_value           key_of_value;          
  typedef implementation_defined::value_traits           value_traits;          
  typedef implementation_defined::pointer                pointer;               
  typedef implementation_defined::const_pointer          const_pointer;         
  typedef implementation_defined::reference              reference;             
  typedef implementation_defined::const_reference        const_reference;       
  typedef implementation_defined::difference_type        difference_type;       
  typedef implementation_defined::size_type              size_type;             
  typedef implementation_defined::value_compare          value_compare;         
  typedef implementation_defined::key_compare            key_compare;           
  typedef implementation_defined::iterator               iterator;              
  typedef implementation_defined::const_iterator         const_iterator;        
  typedef implementation_defined::reverse_iterator       reverse_iterator;      
  typedef implementation_defined::const_reverse_iterator const_reverse_iterator;
  typedef implementation_defined::insert_commit_data     insert_commit_data;    
  typedef implementation_defined::node_traits            node_traits;           
  typedef implementation_defined::node                   node;                  
  typedef implementation_defined::node_ptr               node_ptr;              
  typedef implementation_defined::const_node_ptr         const_node_ptr;        
  typedef implementation_defined::node_algorithms        node_algorithms;       
  // construct/copy/destruct
  splay_multiset();
  explicit splay_multiset(const key_compare &, 
                          const value_traits & = value_traits());
  template<typename Iterator> 
    splay_multiset(Iterator, Iterator, const key_compare & = key_compare(), 
                   const value_traits & = value_traits());
  splay_multiset(splay_multiset &&);
  splay_multiset & operator=(splay_multiset &&);
  ~splay_multiset();
  // public member functions
  iterator begin();
  const_iterator begin() const;
  const_iterator cbegin() const;
  iterator end();
  const_iterator end() const;
  const_iterator cend() const;
  reverse_iterator rbegin();
  const_reverse_iterator rbegin() const;
  const_reverse_iterator crbegin() const;
  reverse_iterator rend();
  const_reverse_iterator rend() const;
  const_reverse_iterator crend() const;
  iterator root();
  const_iterator root() const;
  const_iterator croot() const;
  key_compare key_comp() const;
  value_compare value_comp() const;
  bool empty() const;
  size_type size() const;
  void swap(splay_multiset &);
  template<typename Cloner, typename Disposer> 
    void clone_from(const splay_multiset &, Cloner, Disposer);
  template<typename Cloner, typename Disposer> 
    void clone_from(splay_multiset &&, Cloner, Disposer);
  iterator insert(reference);
  iterator insert(const_iterator, reference);
  template<typename Iterator> void insert(Iterator, Iterator);
  iterator insert_before(const_iterator, reference);
  void push_back(reference);
  void push_front(reference);
  iterator erase(const_iterator);
  iterator erase(const_iterator, const_iterator);
  size_type erase(const key_type &);
  template<typename KeyType, typename KeyTypeKeyCompare> 
    size_type erase(const KeyType &, KeyTypeKeyCompare);
  template<typename Disposer> 
    iterator erase_and_dispose(const_iterator, Disposer);
  template<typename Disposer> 
    iterator erase_and_dispose(const_iterator, const_iterator, Disposer);
  template<typename Disposer> 
    size_type erase_and_dispose(const key_type &, Disposer);
  template<typename KeyType, typename KeyTypeKeyCompare, typename Disposer> 
    size_type erase_and_dispose(const KeyType &, KeyTypeKeyCompare, Disposer);
  void clear();
  template<typename Disposer> void clear_and_dispose(Disposer);
  size_type count(const key_type &);
  template<typename KeyType, typename KeyTypeKeyCompare> 
    size_type count(const KeyType &, KeyTypeKeyCompare);
  iterator lower_bound(const key_type &);
  template<typename KeyType, typename KeyTypeKeyCompare> 
    iterator lower_bound(const KeyType &, KeyTypeKeyCompare);
  const_iterator lower_bound(const key_type &) const;
  template<typename KeyType, typename KeyTypeKeyCompare> 
    const_iterator lower_bound(const KeyType &, KeyTypeKeyCompare) const;
  iterator upper_bound(const key_type &);
  template<typename KeyType, typename KeyTypeKeyCompare> 
    iterator upper_bound(const KeyType &, KeyTypeKeyCompare);
  const_iterator upper_bound(const key_type &) const;
  template<typename KeyType, typename KeyTypeKeyCompare> 
    const_iterator upper_bound(const KeyType &, KeyTypeKeyCompare) const;
  iterator find(const key_type &);
  template<typename KeyType, typename KeyTypeKeyCompare> 
    iterator find(const KeyType &, KeyTypeKeyCompare);
  const_iterator find(const key_type &) const;
  template<typename KeyType, typename KeyTypeKeyCompare> 
    const_iterator find(const KeyType &, KeyTypeKeyCompare) const;
  std::pair< iterator, iterator > equal_range(const key_type &);
  template<typename KeyType, typename KeyTypeKeyCompare> 
    std::pair< iterator, iterator > 
    equal_range(const KeyType &, KeyTypeKeyCompare);
  std::pair< const_iterator, const_iterator > 
  equal_range(const key_type &) const;
  template<typename KeyType, typename KeyTypeKeyCompare> 
    std::pair< const_iterator, const_iterator > 
    equal_range(const KeyType &, KeyTypeKeyCompare) const;
  std::pair< iterator, iterator > 
  bounded_range(const_reference, const_reference, bool, bool);
  template<typename KeyType, typename KeyTypeKeyCompare> 
    std::pair< iterator, iterator > 
    bounded_range(const KeyType &, const KeyType &, KeyTypeKeyCompare, bool, 
                  bool);
  std::pair< const_iterator, const_iterator > 
  bounded_range(const_reference, const_reference, bool, bool) const;
  template<typename KeyType, typename KeyTypeKeyCompare> 
    std::pair< const_iterator, const_iterator > 
    bounded_range(const KeyType &, const KeyType &, KeyTypeKeyCompare, bool, 
                  bool) const;
  iterator iterator_to(reference);
  const_iterator iterator_to(const_reference) const;
  pointer unlink_leftmost_without_rebalance();
  void replace_node(iterator, reference);
  void remove_node(reference);
  void splay_up(iterator);
  template<typename KeyType, typename KeyTypeKeyCompare> 
    iterator splay_down(const KeyType &, KeyTypeKeyCompare);
  iterator splay_down(const key_type &);
  void rebalance();
  iterator rebalance_subtree(iterator);
  template<class... Options2> void merge(splay_multiset< T, Options2...> &);
  template<class... Options2> void merge(splay_set< T, Options2...> &);
  // public static functions
  static splay_multiset & container_from_end_iterator(iterator);
  static const splay_multiset & container_from_end_iterator(const_iterator);
  static splay_multiset & container_from_iterator(iterator);
  static const splay_multiset & container_from_iterator(const_iterator);
  static iterator s_iterator_to(reference);
  static const_iterator s_iterator_to(const_reference);
  static void init_node(reference);
  // public data members
  static const bool constant_time_size;
};

Description

Шаблон класса splay_multiset представляет собой навязчивый контейнер, который имитирует большую часть интерфейса std::multiset, как описано в стандарте C++.

Параметр шаблона T - это тип, которым должен управлять контейнер. Пользователь может указать дополнительные опции и, если опции не предусмотрены, используются опции по умолчанию.

Контейнер поддерживает следующие опции: base_hook<>/member_hook<>/value_traits<>, constant_time_size<>, size_type<> и compare<>.

splay_multiset public construct/copy/destruct

  1. splay_multiset();

    :Построение пустого контейнера.

    :Константа.

    Броски:Если значение_черты::node_traits::node constructor throws (это не происходит с заранее заданными Boost.Intrusive крючками) или конструктор копий бросок объекта key_compare. Базовая гарантия.

  2. explicitkey_compare,value_traitsvalue_traits;
    Сложность:Константа.

    Броски :36>Броски::node_traits::node buildor::node.Intrusive hooks) или конструктор копий бросков объекта key_compare. Базовая гарантия.

  3. templatetypenamesplay_multiset(Iterator b, const key_compare =2>>, constvalue_traits value_traits;2>

    : Отклонение итератора должно давать значение типа value_type. cmp должна быть функцией сравнения, которая вызывает строгое слабое упорядочивание.

    : Постраивает пустой контейнер и вставляет элементы из [b, e].

    : Сложность: Линейность в N, если [b, e] уже отсортирована с использованием comp и в противном случае N * log N, где N - расстояние между первым и последним.

    Броски: Если значение_ черт::node_traits::node constructor throws (это не происходит с предопределенным Boost). Навязчивые крючки или конструктор/оператор() копий бросков объекта key_compare. Базовая гарантия.

  4. splay_multiset(splay_multiset&& x);

    Последствия: доделать

  5. splay_multiset &оператор=(splay_multiset && x);

    : доделать

  6. ~splay_multiset();

    Последствия: Отделяет все элементы от этого. Объекты в наборе не удаляются (т.е. не называются деструкторы), но узлы по параметру шаблона value_traits перезапускаются и, таким образом, могут быть повторно использованы.

    Комплексность: Линейные элементы, содержащиеся в *это.

    Броски: Ничего.

splay_multiset public member functions

  1. iteratorbegin;

    : Возвращает итератор, указывающий на начало контейнера.

    Сложность: Константа.

    Броски: Ничего.

  2. const_iteratorbegin()const;

    :Возвращает const_iterator, указывающий на начало контейнера.

    :Константа.

    Броски: Ничего.

  3. const_iteratorcbegin()const;

    : Возвращает const_iterator, указывающий на начало контейнера.

    : Constant.

    Броски: Ничего.

  4. iteratorend;

    : Возвращает итератор, указывающий на конец контейнера.

    Сложность: Константа.

    Броски: Ничего.

  5. const_iteratorend()const;

    : Возвращает const_iterator, указывающий на конец контейнера.

    :Константа.

    Броски: Ничего.

  6. const_iteratorcend()const;

    : Возвращает const_iterator, указывающий на конец контейнера.

    : Constant.

    Броски: Ничего.

  7. reverse_iteratorrbegin;

    : Возвращает обратный_iterator, указывающий на начало обратного контейнера.

    Сложность: Константа.

    Броски: Ничего.

  8. const_reverse_iterator rbegin()const;

    : Возвращает const_reverse_iterator, указывающий на начало обратного контейнера.

    : Constant.

    Броски: Ничего.

  9. const_reverse_iteratorcrbegin()const;

    : Возвращает const_reverse_iterator, указывающий на начало обратного контейнера.

    : Constant.

    Броски: Ничего.

  10. reverse_iteratorrend;

    : Возвращает обратный_iterator, указывающий на конец обратного контейнера.

    Сложность: Константа.

    Броски: Ничего.

  11. const_reverse_iteratorrend()const;

    : Возвращает const_reverse_iterator, указывающий на конец обратного контейнера.

    : Constant.

    Броски: Ничего.

  12. const_reverse_iteratorcrend()const;

    : Возвращает конст_reverse_iterator, указывающий на конец обратного контейнера.

    : Constant.

    Броски: Ничего.

  13. iteratorroot;

    : Возвращает итератор, указывающий на корневой узел контейнера или конец(), если он не присутствует.

    : Сложность: Константа.

    Броски: Ничего.

  14. const_iteratorrootconst;

    : Возвращает конст_iterator, указывающий на корневой узел контейнера или кенд(), если его нет.

    : Constant.

    Броски: Ничего.

  15. const_iteratorcrootconst;

    : Возвращает конст_iterator, указывающий на корневой узел контейнера или кенд(), если его нет.

    : Constant.

    Броски: Ничего.

  16. key_comparekey_comp()const;

    :Возвращает ключ_compare объект, используемый контейнером.

    :Константа.

    Броски: Если бросит key_compare копи-конструктор.

  17. value_comparevalue_comp()const;

    : Возвращает значение_compare объект, используемый контейнером.

    : Constant.

    Броски: Если value_compare копи-конструктор бросает.

  18. boolempty()const;

    : Эффекты: Возвращается верно, если контейнер пуст.

    :Константа.

    Броски: Ничего.

  19. size_typesizeconst;

    : Возвращает количество элементов, хранящихся в контейнере.

    : Сложность: Линейность к элементам, содержащимся в *это, если опция постоянного размера отключена. Постоянное время иначе.

    Броски: Ничего.

  20. voidswap(splay_multiset& other);

    : Эффекты: Замена содержимого двух контейнеров.

    :Константа.

    Броски: Если сравнительный своп функтора бросает вызов.

  21. templatetypename Cloner, typename Disposer> voidclone_from(constsplay_multiset & src, Cloner disposer);

    : Disposer::operator()(pointer) не должен бросать. Клонер должен уступить узлам, эквивалентным исходным узлам.

    Последствия: Стирает все элементы из *этого вызывающего Диспозитора::оператор()(указатель), клонирует все элементы из src вызывающего Клонера::оператор()(const_reference) и вставляет их на *это. Копии предиката из исходного контейнера.

    Если клонер бросает, все клонированные элементы несвязаны и расположены, вызывая Диспозитор::оператор()(указатель).

    Сложность: Линейный стертый плюс вставленные элементы.

    Броски: Если клонер бросает или предикат копирования, задание бросает. Базовая гарантия. Дополнительные примечания: он также копирует альфа-фактор из исходного контейнера.

  22. templatetypename Cloner, typename Disposer> voidclone_from(splay_multiset && src, Cloner disposer;;

    : Disposer::operator()(pointer) не должен бросать. Клонер должен уступить узлам, эквивалентным исходным узлам.

    Эффекты: Стирает все элементы из *этого вызывающего Диспозитора::оператор()(указатель), клонирует все элементы из src вызывающего Клонера::оператор()(ссылка) и вставляет их на *это. Копии предиката из исходного контейнера.

    Если клонированный элемент бросает, все клонированные элементы являются несвязанными и расположены, вызывая Disposer::operator()(pointer).

    Комплексность: Линейный стертый плюс вставленные элементы.

    Броски: Если клонер бросает или предикат копирует присвоение бросков. Основная гарантия.

    Примечание : Данная версия может модифицировать исходный контейнер, полезный для реализации семантики перемещения.

  23. итераторвставить(ссылказначение;

    Требования: Значение должно быть lvalue

    :Последствия:Вставить значение в контейнер перед верхней границей.

    Средняя сложность для вставочного элемента является наиболее логарифмической.

    Броски: Если выполняется внутренняя функция key_compare ordering. Сильная гарантия.

    Примечание: Не влияет на действительность итераторов и ссылок. Копировальными конструкторами не называются.

  24. iteratorinsertconst_iterator hint,referencevalue;

    : Значение должно быть lvalue, а "hint" должен быть действительным итератором.

    : Вставьте x в контейнер, используя "hint" в качестве подсказки, куда он будет вставлен. Если «подсказка» является верхним_связанным, вставка занимает постоянное время (два сравнения в худшем случае)

    Сложность: Логарифмическая в целом, но это амортизированное постоянное время, если t вставлен непосредственно перед подсказкой.

    Броски: Если внутренняя клавиша_сравните функцию упорядочивания бросает. Сильная гарантия.

    Примечание : Не влияет на действительность итераторов и ссылок. Копировальными конструкторами не называются.

  25. templatetypenameIterator>void(Iteratorb,Iteratore;

    : Относительный итератор должен давать lvalue of type value_type.

    : Вставляет каждый элемент диапазона в контейнер перед верхней границей ключа каждого элемента.

    : Вставка диапазона в общем O(N* log(N)), где N - размер диапазона. Однако он является линейным в N, если диапазон уже отсортирован по значению_comp().

    Броски: Ничего.

    Примечание: Не влияет на валидность итераторов и ссылок. Копировальными конструкторами не называются.

  26. iteratorinert_beforeconst_iterator pos,referencevalue;

    : Значение должно быть lvalue, "pos" должен быть действительным итератором (или концом) и должен быть сукцессатором значения после вставки в соответствии с предикатом

    : Сложность: Постоянное время.

    : Ничто.

    Примечание: Если "pos" не является преемником инварианта упорядочивания контейнера "value" будет нарушено. Это низкоуровневая функция, которая используется только для повышения производительности продвинутыми пользователями.

  27. voidpush_back(ссылказначение;

    : Значение должно быть lvalue, и оно должно быть не меньше наибольшего вставленного ключа

    : Эффекты

    Комплексность: Постоянное время.

    :Ничего.

    Примечание: Если значение меньше наибольшего вставленного инварианта упорядочивания ключа будет нарушено. Эта функция немного более эффективна, чем использование «insert_before». Это низкоуровневая функция, которая используется только для повышения производительности продвинутыми пользователями.

  28. voidpush_front(ссылка значение;

    : Значение должно быть lvalue, и оно должно быть не больше минимального вставленного ключа

    : Эффекты: Вставка x в контейнер в первом положении.

    : Постоянное время.

    : Ничего.

    Примечание: Если значение больше минимального вставленного инварианта упорядочивания ключа будет нарушено. Эта функция немного более эффективна, чем использование «insert_before». Это низкоуровневая функция, которая используется только для повышения производительности продвинутыми пользователями.

  29. iteratorerase(const_iterator i;

    : Стирает элемент, на который указывает i.

    : Средняя сложность для элемента стирания является постоянным временем.

    :Ничего.

    Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.

  30. iteratoreraseconst_iterator b,const_iterator e;
    : Стирает диапазон, указанный на конце b.

    : Средняя сложность для диапазона стирания составляет самое большее O(log(size()+N)), где N - число элементов в диапазоне.

    : Ничто.

    : Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.

  31. size_typeerasekey_typeключ

    : Стирает все элементы с заданным значением.

    : Количество стертых элементов.

    : O(log(size() + N)

    : Ничего.

    : Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.

  32. template<typename KeyType, typename KeyTypeKeyCompare> size_typeerase & KeyTypeKeyCompare;

    : Требуется : ключ такой, что *это означает !comp(ключ, nk), с nk ключом (ключ, nk), с nk ключом_типом значения_типа, вставленным в .

    : Стирает все элементы с заданным ключом. Согласно сравнительным функторам "комп".

    : Количество стертых элементов.

    Сложность: O(log(size() + N).

    Броски: Ничего.

    Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.

  33. templatetypename>erase_and_dispose,const_iterator i,

    : Disposer::оператор(): Стирает элемент, на который указывает i. Disposer::оператор(): Средняя сложность для стираемого элемента составляет постоянное время.

    : Ничто.

    : Инвалидирует итераторы в стертые элементы.

  34. templatetypenameerase_and_dispose,const_iterator e,const_iterator e,

    : Требуется : Диспозитор::оператор() : Эффекты : Диспозитор::оператор(): Средняя сложность для диапазона стирания составляет максимум O(log(size()+34), где N - число элементов в диапазоне.

    :Note: Инвалидирует итераторы в стертые элементы.

  35. templatetypename Disposer> size_typeerase_and_disposekey_type & Key,  Disposer disposer;
    : Disposer::operator()(pointer):37>

    : Стирает все элементы с заданным значением. Диспетчер::оператор()(указатель) вызывается для удаленных элементов.

    : Количество стертых элементов.

    : O(log(size() + N).

    Броски: Ничего.

    Примечание: Недействительность итераторов (но не ссылок) на стертые элементы. Деструкторы не называются.

  36. template KeyType, typename KeyTypeKeyCompare,erase_и_disposeKeyTypeKeyCompare,KeyTypeKeyComparecompare,Disposer disposer,

    Ключ, обозначающий !comp(ключ, nk) и !comp(ключ, nk) с указанием !comp(ключ, nk) и nk ключ_тип значения_типа, вставленный в this.

    Эффекты: Стирает все элементы с заданным ключом. по сравнению с функтором «комп». Диспозитор::оператор()(указатель) вызывается для удаленных элементов.

    : Количество стертых элементов.

    : O(log(size() + N)

    : Броски: Ничего.

    Примечание: Инвалидирует итераторы на стертые элементы.

  37. voidclear;

    : Эффекты: Стирает все элементы.

    Комплексность: Линейное количество элементов на контейнере. Если это безопасный режим или авто-разъединить значение_тип. Постоянное время в противном случае.

    Броски: Ничего.

    Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.

  38. templatetypename Disposer> voidclear_and_dispose( disposer);

    Эффекты: Уничтожает все элементы, вызывающие disposer(p) для каждого узла, который должен быть удален. Комплексность: Средняя сложность для максимум O(log(size() + N)), где N - количество элементов в контейнере.

    Броски: Ничего.

    Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Звонки N раз для удаления функтора.

  39. size_typecount(constkey_type);
    : Возвращает число содержащихся элементов с заданным значением

    : Логарифмическая к числу содержащихся элементов плюс линейная к числу объектов с заданным значением.

    Броски: Если key_compare бросает. Дополнительное примечание: выполняется неконст-функция, игра.

  40. template<typename KeyType, typename KeyTypeKeyCompare>Счетconst&,;
    Требует Требует
    :Ключ разделен по отношению к comp(nk, key) и !comp(ключ, nk), причем comp(nk, key) подразумевает !comp(ключ, nk) и nk ключ_тип значения_type, вставленный в .

    :Логарифмическая по количеству содержащихся элементов плюс линейная по количеству объектов с данным ключом.

    Броски: Если comp бросает. Дополнительное примечание: функция const, отсутствие игры

  41. iteratorlower_bound(constkey_type;;
    : Возвращает итератор к первому элементу, ключ которого не меньше k или конца() если этот элемент не существует.

    : Logarithmic.

    Броски: Если key_compare бросает. Дополнительное примечание: выполняется неконст-функция, игра.

  42. template<typename KeyType, typename KeyTypeKeyCompare> iteratorlower_bound( &KeyTypeKeyCompare);
    Возвращает итератор к первому элементу, ключ которого не меньше k или конца() если этот элемент не существует.

    : Logarithmic.

    Броски: Если key_compare бросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «ключ»

  43. const_iteratorlower_bound(key_type &const;

    Возвращает итератор к первому элементу, ключ которого не меньше k или конца() если этот элемент не существует.

    : Logarithmic.

    Броски: Если key_compare бросает. Дополнительное примечание: функция const, отсутствие игры

  44. template<typename KeyType, typename KeyTypeKeyCompare> const_iteratorlower_bound(const ,KeyTypeKeyComparecompare)const;

    : Возвращает итератор к первому элементу, ключ которого не меньше k или конца() если этот элемент не существует.

    : Logarithmic.

    Броски: Если key_compare бросает. Дополнительное примечание: функция const, отсутствие игры

  45. iteratorupper_bound(constkey_type;;
    : Возвращает итератор к первому элементу, чей ключ больше k или конца() если этот элемент не существует.

    : Logarithmic.

    Броски: Если key_compare бросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «значения»

  46. template<typename KeyType, typename KeyTypeKeyCompare> iteratorupper_boundconst &,KeyTypeKeyCompare;
    Требуется : ключ такой, что *это вставляется в *это.

    Комплексность:Броски: Если comp бросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «ключ»

  47. const_iteratorupper_bound(key_type &const;

    : Возвращает итератор к первому элементу, чей ключ больше k или конца() если этот элемент не существует.

    : Logarithmic.

    Броски: Если key_compare бросает. Дополнительное примечание: функция const, отсутствие игры

  48. template<typename KeyType, typename KeyTypeKeyCompare>constconst &,constcompare;

    : Ключ является таким значением, что *это вставляется в *это.

    Комплексность:Броски: Если comp бросает. Дополнительное примечание: функция const, отсутствие игры

  49. iterator find(const key_type & key);

    Effects: Найден итератор к первому элементу, ключ которого k или конец(), если этот элемент не существует.

    Сложность: Логарифмический.

    Броски: Если key_compare бросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «значения»

  50. template<typename KeyType, typename KeyTypeKeyCompare>iteratorconst &,;
    Требуется
    : ключ таков, что *это означает !comp(ключ, nk), а nk - ключ_тип значения_типа, вставленный в .

    КомплексностьБроски: Если комп бросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «ключ»

  51. const_iteratorfindconst &const;

    ПоследствияПолучает итератор к первому элементу, ключ которого k или конец() если этот элемент не существует.

    :Логарифмический.

    Броски:Если key_compare бросает. Дополнительное примечание: функция const, отсутствие игры

  52. template<typename KeyType, typename KeyTypeKeyCompare> const & , const;const;

    : Ключ является таким значением, что *это означает !comp(ключ, nk), а nk - ключ_тип значения_типа, вставленный в .

    Комплексность: Броски : Если comp бросает. Дополнительное примечание: функция const, отсутствие игры

  53. std:: iterator, iterator > equal_range(const key_type &;

    : Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, где эти элементы были бы, если у них нет элементов с ключом k.

    Сложность : Логарифмический.

    Броски : Если key_compare бросает. Дополнительное примечание: неконст-функция, игра выполняется для первого элемента равного диапазона «значения»

  54. 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, игра выполняется для первого элемента равного диапазона «ключ»

  55. std::const_iterator, const_iterator equal_rangekey_type &const;const;;
    Эффекты: Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, в котором эти элементы были бы, если бы у них не было элементов с ключом k.

    : Logarithmic.

    : Броски: Если key_compare бросает. Дополнительное примечание: функция const не выполняется

  56. template<typename KeyType, typename KeyTypeKeyCompare> , const_iterator (&KeyTypeKeyCompare,const;const;

    :Ключ :Ключ означает !comp(ключ, nk), с !comp(ключ, nk), с nk ключом_типа значения_типа, вставленного в .

    Комплексность :Если comp бросает. Дополнительное примечание: функция const, отсутствие игры

  57. 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.

    Примечание: Экспериментальная функция, интерфейс может измениться в будущих выпусках.

  58. 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: Экспериментальная функция интерфейса может измениться в будущих выпусках.

  59. 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броски.

    ПримечаниеПримечание: Экспериментальная функция интерфейса может измениться в будущих выпусках.

  60. 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 comp throws.

    Note: Эта функция может быть более эффективной, чем вызов upper_bound и lower_bound для low_key и upper_key.

    Note: Экспериментальная функция интерфейса может измениться в будущих выпусках.

  61. iterator iterator_to(ссылказначение);

    Значение должно быть lvalue и должно быть в наборе соответствующего типа. В противном случае поведение не определено.

    Последствия: Возврат: действительный итератор i, принадлежащий набору, который указывает на значение

    Сложность:Константа.

    Броски: Ничего.

  62. const_iteratoriterator_to(const_referencevalue)const;

    : Значение должно быть lvalue и должно быть в наборе соответствующего типа. В противном случае поведение не определено.

    Последствия: Возврат: действительный const_iterator i, принадлежащий набору, который указывает на значение

    Комплексность: Константа.

    Броски: Ничего.

  63. pointerunlink_leftmost_without_rebalance;

    : Отключает левый узел от контейнера.

    : Средняя сложность составляет постоянное время.

    : Ничего.

    Примечания: Эта функция разбивает контейнер и контейнер можно использовать только для большего количества вызовов unlink_leftmost_without_rebalance. Эта функция обычно используется для достижения поэтапного контролируемого разрушения контейнера.

  64. voidreplace_node(iterator replace_this, reference with_this;

    :Requires: replace_this должен быть действительным итератором *this и с_this не должен быть вставлен ни в один контейнер.

    : Заменить_this в его положении в контейнере с_this. Контейнер не нуждается в перебалансировке.

    : Constant.

    Броски: Ничего.

    Примечание: Эта функция будет нарушать инварианты упорядочивания контейнера, если с_это не эквивалентно *заменить_это в соответствии с правилами упорядочивания. Эта функция быстрее, чем стирание и вставка узла, поскольку не требуется перебалансировки или сравнения.

  65. voidremove_node;

    : удаляет "значение" из контейнера.

    : Ничего.

    : Сложность: Логарифмическое время.

    Примечание: Если пользователь называет эту функцию контейнером с постоянным размером времени или константным сравнительным функтором, будет выпущена ошибка компиляции.

  66. void(iterator i);

    : Я должен быть действительным итератором :

    : Эффекты: Эффекты : Помещает элемент, указанный i, в корень дерева, улучшая будущие поиски этого значения.

    : Амортизированный логарифм.

    Броски: Ничего.

  67. template<typename KeyType, typename KeyTypeKeyCompare> iteratorsplay_down(const KeyType , KeyTypeKeyComparecompare);
    Воздействие : Если в контейнере хранится элемент с ключом, эквивалентным значению, элемент помещается в качестве корня дерева. Если элемент отсутствует, возвращается последний узел по сравнению с ключом. Если дерево пустое, конец() возвращается.

    Сложность: Амортизированный логарифм.

    : Возвращается: Итератор к новому корню дерева, конец() если дерево пустое.

    Бросает: Если бросает сравнительный функтор.

  68. iteratorsplay_downconst key_type &;

    : Эффекты: Если в контейнере хранится элемент с ключом, эквивалентным значению, элемент помещается в качестве корня дерева.

    : Amortized logarithmic.

    : Итератор к новому корню дерева, конец() если дерево пустое.

    : Если предикат бросает.

  69. void rebalance();

    Последствия: Дерево.

    Броски: Ничего.

    Сложность: Линейный.

  70. iteratorrebalance_subtreeiterator root;

    : old_root является узлом дерева.

    : Rebalances the subtree rooted at old_root.

    : The new root of the subtree.

    : Nothing.

    Комплексность: Линейные элементы в поддереве.

  71. templateclass...voidmerge<T...>>;: Опции контейнера «источник» могут отличаться только функцией сравнения от *это.

    : Указатели и ссылки на переданные элементы источника относятся к тем же элементам, но как к членам *это. Итераторы, относящиеся к переданным элементам, будут продолжать ссылаться на их элементы, но теперь они ведут себя как итераторы в * это, а не в источник.

    Броски : Ничего, если объект сравнения не бросает.

    Сложность : N log(a.size() + N) (N имеет значение source.size())

  72. template... Options2>merge<T...>>;: Опции контейнера «источник» могут отличаться только функцией сравнения от *это.

    : Указатели и ссылки на переданные элементы источника относятся к тем же элементам, но как к членам *это. Итераторы, относящиеся к переданным элементам, будут продолжать ссылаться на их элементы, но теперь они ведут себя как итераторы в * это, а не в источник.

    Броски : Ничего, если объект сравнения не бросает.

    Сложность : N log(a.size() + N) (N имеет значение source.size())

splay_multiset public static functions

  1. static splay_multiset & container_from_end_iterator;
    : end_iterator должен быть действительным конечным итератором контейнера.

    : Возвращает конст-ссылку на контейнер, ассоциированный с конечным итератором

    : Ничто.

    :Константа.

  2. static const splay_multiset const_iteratorend_iterator

    :Предусловие: end_iterator должен быть действительным конечным итератором контейнера.

    Броски: Ничего.

    Комплексность:Константа.

  3. static splay_multiset & container_from_iterator;
    : Предварительное условие: должно быть действительным итератором контейнера.

    Броски: Ничего.

    Сложность: Logarithmic.

  4. static const splay_multiset от_iterator(const_iterator it)

    : Предварительное условие: должно быть действительным итератором контейнера.

    : Броски: Ничего.

    Комплексность: Логарифмический.

  5. static iterators_iterator_to(ссылказначение);

    Значение должно быть lvalue и должно быть в наборе соответствующего типа. В противном случае поведение не определено.

    : Возврат: действительный итератор i, принадлежащий набору, который указывает на значение

    Сложность: Константа.

    Броски: Ничего.

    Примечание: Эта статическая функция доступна только в том случае, если свойства не имеют состояния.

  6. static const_iterators_iterator_to(const_referencevalue);

    Значение должно быть lvalue и должно быть в наборе соответствующего типа. В противном случае поведение не определено.

    : Возврат: действительный итератор i, принадлежащий набору, который указывает на значение

    Сложность: Константа.

    Броски: Ничего.

    Примечание: Эта статическая функция доступна только в том случае, если свойства не имеют состояния.

  7. static void(ссылка значение;

    : Значение не должно быть в контейнере.

    : init_node ставит крюк значения в известное состояние по умолчанию.

    : Ничто.

    : Постоянное время.

    Примечание: Эта функция ставит крючок в известное состояние по умолчанию, используемое авто_unlink и безопасными крючками.


PrevUpHomeNext

Статья Class template splay_multiset раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 07:44:07/0.039628982543945/1