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

Class template splaytree

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 splaytree

boost::intrusive::splaytree

Synopsis

// In header: <boost/intrusive/splaytree.hpp>
template<typename T, class... Options> 
class splaytree {
public:
  // types
  typedef ValueTraits                                    value_traits;          
  typedef implementation_defined::pointer                pointer;               
  typedef implementation_defined::const_pointer          const_pointer;         
  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::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::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;       
  typedef implementation_defined::insert_commit_data     insert_commit_data;    
  // construct/copy/destruct
  splaytree();
  explicit splaytree(const key_compare &, 
                     const value_traits & = value_traits());
  template<typename Iterator> 
    splaytree(bool, Iterator, Iterator, const key_compare & = key_compare(), 
              const value_traits & = value_traits());
  splaytree(splaytree &&);
  splaytree & operator=(splaytree &&);
  ~splaytree();
  // 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(splaytree &);
  template<typename Cloner, typename Disposer> 
    void clone_from(const splaytree &, Cloner, Disposer);
  template<typename Cloner, typename Disposer> 
    void clone_from(splaytree &&, Cloner, Disposer);
  iterator insert_equal(reference);
  iterator insert_equal(const_iterator, reference);
  template<typename Iterator> void insert_equal(Iterator, Iterator);
  std::pair< iterator, bool > insert_unique(reference);
  iterator insert_unique(const_iterator, reference);
  std::pair< iterator, bool > 
  insert_unique_check(const key_type &, insert_commit_data &);
  std::pair< iterator, bool > 
  insert_unique_check(const_iterator, const key_type &, insert_commit_data &);
  template<typename KeyType, typename KeyTypeKeyCompare> 
    std::pair< iterator, bool > 
    insert_unique_check(const KeyType &, KeyTypeKeyCompare, 
                        insert_commit_data &);
  template<typename KeyType, typename KeyTypeKeyCompare> 
    std::pair< iterator, bool > 
    insert_unique_check(const_iterator, const KeyType &, KeyTypeKeyCompare, 
                        insert_commit_data &);
  iterator insert_unique_commit(reference, const insert_commit_data &);
  template<typename Iterator> void insert_unique(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);
  size_type count(const key_type &) const;
  template<typename KeyType, typename KeyTypeKeyCompare> 
    size_type count(const KeyType &, KeyTypeKeyCompare) const;
  iterator lower_bound(const key_type &);
  const_iterator lower_bound(const key_type &) const;
  template<typename KeyType, typename KeyTypeKeyCompare> 
    iterator lower_bound(const KeyType &, KeyTypeKeyCompare);
  template<typename KeyType, typename KeyTypeKeyCompare> 
    const_iterator lower_bound(const KeyType &, KeyTypeKeyCompare) const;
  iterator upper_bound(const key_type &);
  const_iterator upper_bound(const key_type &) const;
  template<typename KeyType, typename KeyTypeKeyCompare> 
    iterator upper_bound(const KeyType &, KeyTypeKeyCompare);
  template<typename KeyType, typename KeyTypeKeyCompare> 
    const_iterator upper_bound(const KeyType &, KeyTypeKeyCompare) const;
  iterator find(const key_type &);
  const_iterator find(const key_type &) const;
  template<typename KeyType, typename KeyTypeKeyCompare> 
    iterator find(const KeyType &, KeyTypeKeyCompare);
  template<typename KeyType, typename KeyTypeKeyCompare> 
    const_iterator find(const KeyType &, KeyTypeKeyCompare) const;
  std::pair< iterator, iterator > equal_range(const key_type &);
  std::pair< const_iterator, const_iterator > 
  equal_range(const key_type &) const;
  template<typename KeyType, typename KeyTypeKeyCompare> 
    std::pair< iterator, iterator > 
    equal_range(const KeyType &, KeyTypeKeyCompare);
  template<typename KeyType, typename KeyTypeKeyCompare> 
    std::pair< const_iterator, const_iterator > 
    equal_range(const KeyType &, KeyTypeKeyCompare) const;
  std::pair< iterator, iterator > 
  bounded_range(const key_type &, const key_type &, 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 key_type &, const key_type &, 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);
  template<typename T, class... Options2> 
    void merge_unique(splaytree< T, Options2...> &);
  template<typename T, class... Options2> 
    void merge_equal(splaytree< T, Options2...> &);
  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);
  // public static functions
  static splaytree & container_from_end_iterator(iterator);
  static const splaytree & container_from_end_iterator(const_iterator);
  static splaytree & container_from_iterator(iterator);
  static const splaytree & 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_set и splay_multiset контейнеров. Гарантия бесполетности сохраняется только в том случае, если объект Key_compare не бросает.

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

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

splaytree public construct/copy/destruct

  1. splaytree();

    Эффекты: Конструкция пустого контейнера.

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

    Топы: Если значение_traits::node_traits::конкурсные конструкторы (это не происходит с предпостановкой). Базовая гарантия.

  2.   >> >>> > > > >>> >>   > > >> >>>>>>>>>>>>> Базовая гарантия. 

  3. > >> >>> >> >> >> >>> >> > > >> >> >>>> >>> cmp должна быть функцией сравнения, которая вызывает строгий слабый заказ.

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

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

    Throws<> Интрузивные крючки) или копировальный конструктор/оператор () бросков объекта Key_compare. Базовая гарантия.

  4. splaytree(splaytree & x);

    Effects: to-do

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

    Effects: to-do

  6. ~splaytree();

    Effects: Detaches all elements from this. Объекты в наборе не удаляются (т. е. не называются деструкторами), но узлы в соответствии с параметром шаблона value_traits являются восстановленными и, таким образом, могут быть повторно использованы.

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

    Throws: Ничего.

splaytree public member functions

  1. iterator begin();

    Effects: Returns an iterator indicating to the beginning of the container.

    Complexity: Constant.

    Throws Ничего.

  2. const_iterator begin() const;

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

    Complexity: Constant.

    Throw

  3. const_iterator cbegin() const;

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

    Complexity: Constant.

    <1718>

  4. iterator end();

    Effects: Returns an iterator indicating to the end of the container.

    Complexity: Constant.

    Throws: Nothing.

  5. const_iterator end() const;

    Effects: Returns a const_iterator указывающий на конец контейнера.

    Complexity: Constant.

    ThrowsНичего не >>>>>>>

  6. const_iterator cend() const;

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

    Complexity: Constant.

    Throw

  7. reverse_iterator rbegin();

    Effects: Returns a reverse_iterator указывающий на начало обратного контейнера.

    Complexity: Constant.

    Throws<172> Ничего.

  8. const_reverse_iterator rbegin() const;

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

    Complexity: Constant.

  9. const_reverse_iterator crbegin() const;

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

    Complexity: Constant.

  10. reverse_iterator rend();

    Effects: Returns a reverse_iterator, указывающий на конец обратного контейнера.

    Complexity: Constant.

    Throws

  11. const_reverse_iterator rend() const;

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

    complexity: Constant.

  12. const_reverse_iterator crend() const;

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

    complexity: Constant.

  13. iterator root();

    Effects: Returns a iterator indicating to the root node of the container or end() if not present.

    Complexity: Constant.

    Throws<172> Ничего.

  14. const_iterator root() const;

    Effects: Returns a const_iterator указывающий на корневой узел контейнера или cend() если не присутствует.

    Complexity: Constant.

  15. const_iterator croot()const;

    Effects: Returns a const_iterator указывающий на корневой узел контейнера или cend() если не присутствует.

    Complexity: Constant.

  16. key_compare key_comp() const;

    Effects: Returns the key_compare object used by the container.

    Complex: Constant.

    Throws>>>>>> Если Key_compare выбрасывает копи-конструктор.

  17.  value_compare  value_comp() const;

    Effects: Returns the value_compare object used by the container.

    Complex: Constant.

    Throws>>>>> Если value_compare copy-constructor бросает.

  18. bool пустая() const;

    Следы: возвраты верны, если контейнер пуст.

    Complexity: Constant.

    Throws

  19. size_type size() const;

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

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

    Торы: Ничего.

  20. void swap(splaytree & другие);

    Следы: Купить содержимое двух контейнеров.

    20>Комплексность<212>:Постоян.

    <1920>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Если своп-звонок фанктора сравнения бросится.

  21.  Шаблон>void clone_ from(const splay>& src, Cloner Cloner должен уступить узлам, эквивалентным исходным узлам.

    Следы: Erases all the elements from *This call Disposer::operator() (pointer), клонирует все элементы из src, звонящего Cloner::operator() (const_reference) и вставляет их на *это.

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

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

  22. template<typename Cloner, typename Disposer> void clone_from(splay>>>>>>>%2> Cloner должен уступить узлам, эквивалентным исходным узлам.

    Следы: Erases all the elements from *This call Disposer::operator() (pointer), клонирует все элементы из src call Cloner::operator (reference) и вставляет их на *это.

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

    <340>Throws: Если клонист бросает или предикатное копирование. Базовая гарантия.

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

  23. iterator insert_equal(reference value);

    Requires: значение должно быть l value

    Effects Если заказывает функцию внутреннего ключа_композиции. Сильная гарантия.

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

  24. iterator insert_equal(const_iterator,, reference value);

    Requires: значение должно быть l value, и "hint" должно быть действительный iterator.

    <222>Effects> Если «хинт» - это верхняя часть, то вставка занимает постоянное время (два сравнения в худшем случае)

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

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

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

  25. Текулятор>>>12>>13>>>>3>2>3>2>3>2>3>28>30>30>10>200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Однако это линейно в N, если диапазон уже отсортирован по value_comp().

    Throws: Nothing.

    <330>Note: Не влияет на действительность итераторов и ссылок. Никаких копирайтеров не называют.

  26. >> >>>> >> >> >> >>> >>> >> >> > >> >>>2>>2>>>>>2>>>>>2>>>>>>2>>>>2>>2>>>30>>>30>>30>2000>>200>> Никаких копирайтеров не называют.

  27. > >inert_unique;<219> Requires,> reference value7>;<219>

    22>Requires: значение должно быть l value, и "int" должен быть действительный iterator

    Effects Никаких копирайтеров не называют.

  28. > > >> > >> >> >> > >inert_unique_check( >>>>> ключ& Если значение может быть добавлено, то оно верно в возвратной паре боролеана и заполняет «commit_data», которая предназначена для использования с функцией «insert_commit».

    Complexity: Средняя сложность в большинстве логарифмических.

    Throws: Если функция композаказания бросается. Сильная гарантия.

  29. > > > > >> >> > >> > > > >>> > > >>> Если значение может быть добавлено, то оно верно в возвратной паре боролеана и заполняет «commit_data», которая предназначена для использования с функцией «insert_commit».

    Complexity: Logarithmic в целом, но это амортизированное постоянное время, если t вставляется непосредственно перед подсказкой.

    Throws: Если функция компоринга бросается. Сильная гарантия.

  30. template<имя типа Кейком>> std::Паир> итератор, боул > <313> Различие заключается в том, что комп сравнивает произвольный ключ с содержащимися значениями.

    Следы: Проверяет, может ли значение быть вставлено в контейнер, используя предоставленный пользователем ключ вместо самого значения.

    Возвращения: Если есть эквивалентное значение возвращает пару, содержащую итератор, к уже существующему значению и ложному. Если значение может быть добавлено, то оно верно в возвратной паре боролеана и заполняет «commit_data», которая предназначена для использования с функцией «insert_commit».

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

    Throws: Если функция композаказывания бросается. Сильная гарантия.

    Заметки: Эта функция используется для улучшения производительности при построении значения_типа дорого: если есть эквивалентное значение, то построенный объект должен быть отброшен. Много раз часть узла, которая используется для наложения заказа, намного дешевле для построения, чем тип value_, и эта функция предлагает возможность использовать эту часть, чтобы проверить, будет ли вставка успешной.

    Если проверка успешена, пользователь может конструировать значение_type и использовать "insert_commit" для вставки объекта в постоянное время. Это дает полную логарифмическую сложность для вставки: check(O(log(N)) + commit(O(1)).

    "commit_data" остается действительным для последующего "insert_commit" только в том случае, если больше объектов не вставлены или стерты из контейнера.

  31. template<имя типа Клавиатуре>>> Различие заключается в том, что комп сравнивает произвольный ключ с содержащимися значениями.

    Следы: Проверяет, может ли значение быть вставлено в контейнер, используя предоставленный пользователем ключ вместо самого значения, используя «синт» в качестве намека на то, где он будет вставлен.

    Возвращение: Если есть эквивалентное значение возвращает пару, содержащую итератор, к уже существующему значению и ложному. Если значение может быть добавлено, то оно верно в возвратной паре боролеана и заполняет «commit_data», которая предназначена для использования с функцией «insert_commit».

    Complexity: Logarithmic в целом, но это амортизированное постоянное время, если t вставляется непосредственно перед подсказкой.

    Throws: Если функция компоринга бросается. Сильная гарантия.

    Заметки: Эта функция используется для улучшения производительности при построении значения_типа дорого: если есть эквивалентное значение, то построенный объект должен быть отброшен. Много раз часть конструкции, которая используется для наложения заказа, намного дешевле для построения, чем тип value_, и эта функция предлагает возможность использовать этот ключ, чтобы проверить, будет ли вставка успешной.

    Если проверка успешена, пользователь может построить параметр value_type и использовать "insert_commit" для вставки объекта в постоянное время. Это может дать полную сложность постоянного времени для вставки: check(O(1)) + commit(O(1)).

    "commit_data" остается действительным для последующего "insert_commit" только в том случае, если больше объектов не вставлены или стерты из контейнера.

  32. iterator insert_unique_commit(reference value, const insert_commit_data & commit_data;;

    Requires: значение должно быть l value of type_type. commit_data, должно быть, был получен из предыдущего звонка на «insert_check».

    >

    Ревки: Вставка значения в контейнере с помощью информации, полученной из "commit_data", которую заполнили предыдущие "insert_check".

    >>РевацииИсполнители: Итератор для вновь вставленного объекта.

    >>>>>>> Никакое значение не должно быть вставлено или стерто между вызовами "insert_check" и "insert_commit".

  33. Текулятор>><112>>>13>2>>2>> 2>>>>>2>>>>28>>>28>>20>30>10>20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Однако это линейно в N, если диапазон уже отсортирован по value_comp().

    Throws: Nothing.

    <330>Note: Не влияет на действительность итераторов и ссылок. Никаких копирайтеров не называют.

  34. >> 1>insert_ before (const_iterator pos, reference value7>;

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

    >>>

    >>>>

    >>>>>>

    >>>>>

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

  35. void push_back(reference value);

    Requires: значение должно быть l value, и оно должно быть не меньше, чем наибольший вставленный ключ

    Effects Эта функция немного более эффективна, чем использование «insert_ before». Это низкоуровневая функция, которая будет использоваться только по причинам производительности продвинутыми пользователями.

  36. void push_front(reference value);

    Requires: значение должно быть l value, и оно должно быть не больше, чем минимальный вставленный ключ

    Effects Эта функция немного более эффективна, чем использование «insert_ before». Это низкоуровневая функция, которая будет использоваться только по причинам производительности продвинутыми пользователями.

  37. iterator erase(const_iterator i);

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

    Complexity Средняя сложность для стерточного элемента - постоянное время.

    Не называются деструкторы.

  38. > >>> > ;

    Effects: Erases the range pointed to b end e.

    Complexity<232> Не называются деструкторы.

  39. ОноОно> >> >>>>> >2>>>2>>>2>2>>2>2>20>

    2>20

    20>20>20>20000>2000>200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Не называются деструкторы.

  40. template<имя типа KeyType> KeyType erase(const KeyType & key, KeyTypeKeyCompare compkey;

    Requirestype По данным сравнечного функтора «comp».

    <338>Возвращение: Количество стертых элементов.

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

    Throws: Nothing.

    <338>Note: Invalidates iterators (не ссылки на стертение). Не называются деструкторы.

  41.   >> >> >> > > 2>> >>> >> 2>> 

    29>>

    >>30>

  42. > >> > >> > > > > > > >

  43.  Шаблон<имя  Disposer> size_type erase_and_dispose(constkey_type & key,Disposer Disposer::operator() (pointer) призван к удаленным элементам.

    <33334>Возвращение: Число стертых элементов.

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

    <334>Throws: Nothing.

    <334>Note Не называются деструкторы.

  44. ОноОноОно>Оно>>Оно>>>> согласно сопоставлению фанктора «Комп». Disposer::operator() (pointer) предназначен для удаленных элементов.

    Возвращения: Число стертых элементов.

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

    Throws: Nothing.

    <44445>Note

  45. void clear();

    Effects: Erases all of the elements.

    Complexity: Linear to the number of elements on the container. если это безопасный или авто-unlink value_type. Постоянное время в противном случае.

    Торы: Ничего.

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

  46. template<typename Disposer> void clear_and_dispose(DisposerИсполнитель;;
    >

    Effects: Erases all of the elements callingr(p) Сложность: Средняя сложность для большинства O(log(size() + N)), где N - число элементов в контейнере.

    Throws: Nothing.

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

  47. size_type count (const key_type & key);

    Effects: Возвращает количество содержащихся элементов с данным значением

    22>комплексность<232> Дополнительное примечание: неконстантная функция, исполняется игра.

  48. template<имя типа  > KeyType      >> >           >> >>>> 36>3338>  > > >  Дополнительное примечание: неконстантная функция, исполняется игра. 

  49. size_type count(const key_type & key) const;

    Effects> Дополнительная заметка: функция минусов, не выполняется

  50. template<имя типа  > >>        >> >           >  >>> >>337> 

    Дополнительная заметка: функция минусов, не выполняется

  51. iterator lower_bound(const key_type & key;

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

    <212> Дополнительное примечание: неконстантная функция, исполняется игра.

  52. const_iterator lower_bound(const key_type & key) const;

    Effects: возвратит итератор к первому элементу, ключ которого не меньше kmic или endplex, если этого элемента не существует

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Дополнительная заметка: функция минусов, не выполняется

  53. template<имя типа keyCompare> iterator lower_bound(const KeyType & key, KeyTypeKeyCompare comp>

    Effect<392>> Дополнительное примечание: неконструкция, игра выполняется для первого элемента равного диапазона «ключа»

  54. template<имя типа keyCompare> const_iterator lower_bound><>(consare KeyType & key, KeyType Дополнительная заметка: функция минусов, не выполняется 

  55. iterator upper_bound (const key_type & key;

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

    <2222> Дополнительное примечание: неконстантная функция, игра выполняется для первого элемента равного диапазона «ценности»

  56. const_iterator upper_bound(const key_type & key) const;

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

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Дополнительная заметка: функция минусов, не выполняется

  57. template<имя типа > >> >  > > >>    >> >  >        > >> >> >>> 

    37> Дополнительное примечание: неконстантная функция, игра выполняется для первого элемента равного диапазона «ключа»

  58. template<имя типа Клавиатуре> KeyType >> , Клавиатуре Дополнительная заметка: функция минусов, не выполняется 

  59. iterator find(const key_type & key;

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

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

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

  60. const_iterator find (const key_type & key) const;

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

    Дополнительная заметка: функция минусов, не выполняется

  61. template<имя типа Найти > Тиератор 16>Финд(>Киаг>> KeyType  ключ, KeyTypeKeyCompare Дополнительное примечание: неконстантная функция, игра выполняется для первого элемента равного диапазона «ключа» 

  62. template<имя типа  >>    >    > >>   > >  >> Дополнительная заметка: функция минусов, не выполняется 

  63. std::pair< iterator, iterator > equal_range(const key_type & key>; 

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

    <336>Сложность: Logarithmic.

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

  64. std::Паир< const_iterator, const_iterator > e_range(const_type Дополнительная заметка: функция минусов, не выполняется 

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

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

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

  66. template<имя типа  > > > >   > >  =2>      >  >> >>> Дополнительная заметка: функция минусов, не выполняется 

  67. > > > >> >> > > > > > >

    первый = нижний предел (нижний ключ) если левый, верхний_подъемный (нижний ключ) в противном случае

    второй = верхний_привод (upper_key)>

  68. template<имя типа   >          >  >         

    16> = нижний_округ (нижний_ключ, комп) если левый_закрытый, верхний_обратный(нижний_округ, комп)

  69. > > > >> > > > > > >

    Следы: Возвращает пару со следующими критериями:

    первый = нижний предел (нижний ключ) если левый, верхний_привод (нижний ключ) в противном случае

    секундный = верхний_привод (upper_key) если правый, нижний_привод (upper_key)

  70. template<имя типа < 3> < 3> < 2> < 13> < 2> >               > 

    первый = нижний (нижний) ключ, комп) если левый_закрытый, верхний_прицеп (нижний_под ключ, комк)

  71. iterator iterator_to(reference value);

    Requires: значение должно быть l value и должно быть в наборе подходящего типа. В противном случае поведение не определено.

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

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

    Throws: Ничего.

  72. const_iterator iterator_to(const_reference value) const;

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

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

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

    Throws: Ничего.

  73. pointer unlink_leftmost_ without_re balance();

    Effects: Unlinks the leftmost node from the container.

    >Complexity Средняя сложность - постоянное время.

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

  74. void replace_node(iterator replace_this, reference with_this;

    Requires: replace_ this must be a valid iterator of *this and with_this must not be included in any container.

    Eff>< Контейнер не нуждается в перебалансировке.

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

    Throws: Nothing.

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

  75. void remove_node(reference value);

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

    Throws: Nothing.

  76. template<typename T, class... Если есть элемент в ключе, эквивалентном ключу элемента из источника, то этот элемент не извлекается из источника.

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

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

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

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

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

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

  78. void splay_up(iterator i);

    Requires: i должен быть действительным итератором *This.

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

  79. template<имя типа KeyTypeKeyCompare> iterator splay_down(const KeyType & key, KeyTypeKeyCompare comp;

    Effect<> Если элемент не присутствует, возвращает последний узел по сравнению с ключом. Если дерево пустое, то конец () возвращается.

    Комплексность: амортизированный логарифм.

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

    Throws

  80. iterator splay_down (const key_type & key7>);

    Effects: Перемещение контейнера так, что если *это сохраняет элемент, эквивалентный ключу значения, то помещается в корень дерева.

  81. void баланс();

    Следы: Ребалансы дерево.

    Throws: Nothing.

    Complexity: Linear.

  82. 1>2> > re balance_subtree(iterator root);

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

    Effects

splaytree public static functions

  1. статический splaytree & контейнер_от_end_iterator(iterator endplex_iterator)Effecterator

    Кондиционер

  2. Тех2> > Контейнер > >>>>2>>2>2>2324>Условие: end_iterator должен быть действительным кондитером контейнера

    >>>>>>>>>>>>>>>>>>>>>2>>>>>>>>>>>2>>>>>>>>2>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  3. статический splaytree & контейнер_из_итератор(итератор );

    Контейнер>>>><>>

  4. Тех2>2> > >>> & <611>контейнер_из_итератора>>2>2>>2>>>>2>>>>>>>2>>>>>>>>222>>>>Тех26>>>>>>25>

  5. статический итатор s_iterator_to(reference value);

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

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

    Сложность: Постоян.

    Throws: Ничего.

    Ноте: Эта статическая функция доступна только в том случае, если >>

  6. статический const_iterator s_iterator_to(const_reference value);

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

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

    Сложность: Постоян.

    Throws: Ничего.

    Ноте: Эта статическая функция доступна только в том случае, если >>

  7. статический void init_node(reference value);

    <120>Requires: значение не должно быть в контейнере.

    20>Следы>


PrevUpHomeNext

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 10:00:50/0.017320871353149/0