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

Class template list

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 list

boost::intrusive::list

Synopsis

// In header: <boost/intrusive/list.hpp>
template<typename T, class... Options> 
class list {
public:
  // types
  typedef ValueTraits                                          value_traits;          
  typedef value_traits::pointer                                pointer;               
  typedef value_traits::const_pointer                          const_pointer;         
  typedef pointer_traits< pointer >::element_type              value_type;            
  typedef pointer_traits< pointer >::reference                 reference;             
  typedef pointer_traits< const_pointer >::reference           const_reference;       
  typedef pointer_traits< pointer >::difference_type           difference_type;       
  typedef SizeType                                             size_type;             
  typedef list_iterator< value_traits, false >                 iterator;              
  typedef list_iterator< value_traits, true >                  const_iterator;        
  typedef boost::intrusive::reverse_iterator< iterator >       reverse_iterator;      
  typedef boost::intrusive::reverse_iterator< const_iterator > const_reverse_iterator;
  typedef value_traits::node_traits                            node_traits;           
  typedef node_traits::node                                    node;                  
  typedef node_traits::node_ptr                                node_ptr;              
  typedef node_traits::const_node_ptr                          const_node_ptr;        
  typedef circular_list_algorithms< node_traits >              node_algorithms;       
  typedef unspecified                                          header_holder_type;    
  // construct/copy/destruct
  list();
  explicit list(const value_traits &);
  template<typename Iterator> 
    list(Iterator, Iterator, const value_traits & = value_traits());
  list(list &&);
  list & operator=(list &&);
  ~list();
  // public member functions
  void push_back(reference);
  void push_front(reference);
  void pop_back();
  template<typename Disposer> void pop_back_and_dispose(Disposer);
  void pop_front();
  template<typename Disposer> void pop_front_and_dispose(Disposer);
  reference front();
  const_reference front() const;
  reference back();
  const_reference back() const;
  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;
  size_type size() const;
  bool empty() const;
  void swap(list &);
  void shift_backwards(size_type = 1);
  void shift_forward(size_type = 1);
  iterator erase(const_iterator);
  iterator erase(const_iterator, const_iterator);
  iterator erase(const_iterator, const_iterator, size_type);
  template<typename Disposer> 
    iterator erase_and_dispose(const_iterator, Disposer);
  template<typename Disposer> 
    iterator erase_and_dispose(const_iterator, const_iterator, Disposer);
  void clear();
  template<typename Disposer> void clear_and_dispose(Disposer);
  template<typename Cloner, typename Disposer> 
    void clone_from(const list &, Cloner, Disposer);
  template<typename Cloner, typename Disposer> 
    void clone_from(list &&, Cloner, Disposer);
  iterator insert(const_iterator, reference);
  template<typename Iterator> void insert(const_iterator, Iterator, Iterator);
  template<typename Iterator> void assign(Iterator, Iterator);
  template<typename Iterator, typename Disposer> 
    void dispose_and_assign(Disposer, Iterator, Iterator);
  void splice(const_iterator, list &);
  void splice(const_iterator, list &, const_iterator);
  void splice(const_iterator, list &, const_iterator, const_iterator);
  void splice(const_iterator, list &, const_iterator, const_iterator, 
              size_type);
  void sort();
  template<typename Predicate> void sort(Predicate);
  void merge(list &);
  template<typename Predicate> void merge(list &, Predicate);
  void reverse();
  void remove(const_reference);
  template<typename Disposer> 
    void remove_and_dispose(const_reference, Disposer);
  template<typename Pred> void remove_if(Pred);
  template<typename Pred, typename Disposer> 
    void remove_and_dispose_if(Pred, Disposer);
  void unique();
  template<typename BinaryPredicate> void unique(BinaryPredicate);
  template<typename Disposer> void unique_and_dispose(Disposer);
  template<typename BinaryPredicate, typename Disposer> 
    void unique_and_dispose(BinaryPredicate, Disposer);
  iterator iterator_to(reference);
  const_iterator iterator_to(const_reference) const;
  void check() const;
  // public static functions
  static list & container_from_end_iterator(iterator);
  static const list & container_from_end_iterator(const_iterator);
  static iterator s_iterator_to(reference);
  static const_iterator s_iterator_to(const_reference);
  // public data members
  static const bool constant_time_size;
  static const bool stateful_value_traits;
  static const bool has_container_from_iterator;
};

Description

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

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

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

list public construct/copy/destruct

  1. <
    list();
    >

    Эффекты: Составляет пустой список.

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

    Бросает: Если value_traits::node_traits::node конструктор бросает (это не происходит с заранее заданными Boost.Intrusive крючками).

  2. <
    explicitlist(constvalue_traits&v_traits);
    >

    Эффекты: Составляет пустой список.

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

    Бросает: Если value_traits::node_traits::node конструктор бросает (это не происходит с заранее заданными Boost.Intrusive крючками).

  3. <
    template<typenameIterator>
     list(Iteratorb,Iteratore,constvalue_traits&v_traits=value_traits());
    >

    Требуется: Ссылочный итератор должен давать значение l типа value_type.

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

    Сложность: Линейное расстояние (b, e). Копирование конструкторов не называется.

    Бросает: Если value_traits::node_traits::node конструктор бросает (это не происходит с заранее заданными Boost.Intrusive крючками).

  4. <
    list(list&&x);
    >

    Эффекты: делать

  5. <
    list&operator=(list&&x);
    >

    Эффекты: делать

  6. <
    ~list();
    >

    Эффекты: Если это не безопасный режим или значение автоматического разъединения, деструктор ничего не делает (т.е. код не генерируется). В противном случае он отделяет от этого все элементы. При этом объекты в списке не удаляются (т.е. не называются деструкторы), а крючки по параметру шаблона ValueTraits устанавливаются на их значение по умолчанию.

    Сложность: Линейный по количеству элементов в списке, если это безопасное или автоматическое значение разъединения. В противном случае постоянная.

list public member functions

  1. <
    voidpush_back(referencevalue);
    >

    Требуется: Значение должно быть значением l.

    Эффекты: Вставьте значение в заднюю часть списка. Копирование конструкторов не называется.

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

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

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

  2. <
    voidpush_front(referencevalue);
    >

    Требуется:

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

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

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

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

  3. <
    voidpop_back();
    >

    Эффекты: Стирает последний элемент списка. Разрушители не называются.

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

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

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

  4. <
    template<typenameDisposer>voidpop_back_and_dispose(Disposerdisposer);
    >

    Требует: Диспетчер::оператор()(указатель) не должен бросать.

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

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

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

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

  5. <
    voidpop_front();
    >

    Эффекты: Стирает первый элемент списка. Деструкторы не называются.

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

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

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

  6. <
    template<typenameDisposer>voidpop_front_and_dispose(Disposerdisposer);
    >

    Требует: Диспетчер::оператор()(указатель) не должен бросать.

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

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

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

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

  7. <
    referencefront();
    >

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

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

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

  8. <
    const_referencefront()const;
    >

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

    Бросает: Ничего.

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

  9. <
    referenceback();
    >

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

    Бросает: Ничего.

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

  10. <
    const_referenceback()const;
    >

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

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

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

  11. <
    iteratorbegin();
    >

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

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

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

  12. <
    const_iteratorbegin()const;
    >

    Эффекты: Возвращает const_iterator к первому элементу в списке.

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

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

  13. <
    const_iteratorcbegin()const;
    >

    Эффекты: Возвращает const_iterator к первому элементу в списке.

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

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

  14. <
    iteratorend();
    >

    Эффекты: Возвращает итератор в конец списка.

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

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

  15. <
    const_iteratorend()const;
    >

    Эффекты: Возвращает const_iterator в конец списка.

    Бросает: Ничего.

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

  16. <
    const_iteratorcend()const;
    >

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

    Бросает: Ничего.

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

  17. <
    reverse_iteratorrbegin();
    >

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

    Бросает: Ничего.

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

  18. <
    const_reverse_iteratorrbegin()const;
    >

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

    Бросает: Ничего.

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

  19. <
    const_reverse_iteratorcrbegin()const;
    >

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

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

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

  20. <
    reverse_iteratorrend();
    >

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

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

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

  21. <
    const_reverse_iteratorrend()const;
    >

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

    Бросает: Ничего.

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

  22. <
    const_reverse_iteratorcrend()const;
    >

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

    Бросает: Ничего.

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

  23. <
    size_typesize()const;
    >

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

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

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

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

  24. <
    boolempty()const;
    >

    Эффекты: Возвращается, если список не содержит элементов.

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

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

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

  25. <
    voidswap(list&other);
    >

    Эффекты: Изменяет элементы x и *это.

    Бросает: Ничего.

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

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

  26. <
    voidshift_backwards(size_typen=1);
    >

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

    Бросает: Ничего.

    Сложность: Линейный по количеству смен.

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

  27. <
    voidshift_forward(size_typen=1);
    >

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

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

    Сложность: Линейный по количеству смен.

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

  28. <
    iteratorerase(const_iteratori);
    >

    Эффекты: Стирает элемент, указанный i в списке. Деструкторы не называются.

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

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

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

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

  29. <
    iteratorerase(const_iteratorb,const_iteratore);
    >

    Требуется: b и e должны быть действительными итераторами для элементов в этом.

    Эффекты: Уничтожает диапазон элементов, указанный b и e Никакие деструкторы не называются.

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

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

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

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

  30. <
    iteratorerase(const_iteratorb,const_iteratore,size_typen);
    >

    Требуется: b и e должны быть действительными итераторами элементов в *это. n должно быть расстоянием b, e.

    Эффекты: Уничтожает диапазон элементов, указанный b и e Никакие деструкторы не называются.

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

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

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

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

  31. <
    template<typenameDisposer>
     iteratorerase_and_dispose(const_iteratori,Disposerdisposer);
    >

    Требуется: Диспетчер::оператор()(поинт) не должен бросать.

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

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

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

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

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

  32. <
    template<typenameDisposer>
     iteratorerase_and_dispose(const_iteratorb,const_iteratore,
                                Disposerdisposer);
    >

    Требует: Диспетчер::оператор()(указатель) не должен бросать.

    Эффекты: Уничтожает диапазон элементов, указанный b и e Никакие деструкторы не называются. Диспозитор::оператор()(указатель) вызывается для удаленных элементов.

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

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

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

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

  33. <
    voidclear();
    >

    Эффекты: Стирает все элементы контейнера. Никаких деструкторов.

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

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

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

  34. <
    template<typenameDisposer>voidclear_and_dispose(Disposerdisposer);
    >

    Требует: Диспетчер::оператор()(указатель) не должен бросать.

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

    Бросает: Ничего.

    Сложность: Линейное число элементов списка.

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

  35. <
    template<typenameCloner,typenameDisposer>
     voidclone_from(constlist&src,Clonercloner,Disposerdisposer);
    >

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

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

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

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

    Бросок: Если клонер бросит. Базовая гарантия.

  36. <
    template<typenameCloner,typenameDisposer>
     voidclone_from(list&&src,Clonercloner,Disposerdisposer);
    >

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

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

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

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

    Бросок: Если клонер бросит. Базовая гарантия.

  37. <
    iteratorinsert(const_iteratorp,referencevalue);
    >

    Требуется: Значение должно быть значением l и p должно быть действительным итератором этого.

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

    Возврат: Итератор вставленного элемента.

    Бросает: Ничего.

    Сложность: Постоянное время. Никаких конструкторов копий.

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

  38. <
    template<typenameIterator>
     voidinsert(const_iteratorp,Iteratorb,Iteratore);
    >

    Требуется: Отклоняющийся итератор должен давать lзначение типа value_type и p должен быть действительным итератором *this.

    Эффекты: Вставляет диапазон, указанный b и e перед положением p. Копирование конструкторов не называется.

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

    Сложность: Линейное число вставленных элементов

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

  39. <
    template<typenameIterator>voidassign(Iteratorb,Iteratore);
    >

    Требуется: Ссылочный итератор должен давать значение l типа value_type.

    Эффекты: Очищает список и вставляет диапазон, указанный b и e. Ни разрушители, ни конструкторы копий не называются.

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

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

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

  40. <
    template<typenameIterator,typenameDisposer>
     voiddispose_and_assign(Disposerdisposer,Iteratorb,Iteratore);
    >

    Требуется: Диспетчер::оператор()(пойнтеры) не должен бросать.

    Требуется: Ссылочный итератор должен давать значение l типа value_type.

    Эффекты: Очищает список и вставляет диапазон, указанный b и e. Ни разрушители, ни конструкторы копий не называются. Диспозитор::оператор()(указатель) вызывается для удаленных элементов.

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

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

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

  41. <
    voidsplice(const_iteratorp,list&x);
    >

    Требуется: p должен быть действительным итератором этого.

    Эффекты: Переносит все элементы списка x в этот список перед элементом, указанным p. Ни разрушители, ни конструкторы копий не называются.

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

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

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

  42. <
    voidsplice(const_iteratorp,list&x,const_iteratornew_ele);
    >

    Требуется: p должен быть действительным итератором этого. new_ele должен указывать на элемент, содержащийся в списке x.

    Эффекты: Переносит значение, указанное new_ele, из списка x в этот список перед элементом, указанным p. Ни разрушители, ни конструкторы копий не называются. Если p == new_ele или p == ++new_ele, эта функция является нулевой операцией.

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

    Сложность:

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

  43. <
    voidsplice(const_iteratorp,list&x,const_iteratorf,const_iteratore);
    >

    Требуется: p должен быть действительным итератором этого. f и e должны указывать на элементы, содержащиеся в списке x.

    Эффекты: Переносит диапазон, указанный f и e, из списка x в этот список, перед элементом, указанным p. Ни разрушители, ни конструкторы копий не называются.

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

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

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

  44. <
    voidsplice(const_iteratorp,list&x,const_iteratorf,const_iteratore,
               size_typen);
    >

    Требуется: p должен быть действительным итератором этого. f и e должны указывать на элементы, содержащиеся в списке x. n == расстояние (f, e)

    Эффекты: Переносит диапазон, указанный f и e из списка x в этот список, перед элементом, указанным p. Ни разрушители, ни конструкторы копий не называются.

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

    Сложность:

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

  45. <
    voidsort();
    >

    Эффекты: Эта функция сортирует список *это согласно std::less. Сорт стабилен, то есть сохраняется относительный порядок эквивалентных элементов.

    Бросок: Если value_traits::node_traits::node constructor throws (это не происходит с предопределенными Boost.Intrusive hooks) или std::lessthrows. Основная гарантия.

    Примечания: Итераторы и ссылки не являются недействительными.

    Сложность: Количество сравнений приблизительно равно N log N, где N — размер списка.

  46. <
    template<typenamePredicate>voidsort(Predicatep);
    >

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

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

    Бросок: Если value_traits::node_traits::node constructor throws (это не происходит с заранее заданными Boost.Intrusive крючками) или predicate throws. Основная гарантия.

    Примечания: Это не произойдет, если используется list_base_hook<>или<list_member_hook>. Итераторы и ссылки не являются недействительными.

    Сложность: Количество сравнений приблизительно равно N log N, где N — размер списка.

  47. <
    voidmerge(list&x);
    >

    Эффекты: Эта функция удаляет все элементы x и вставляет их в порядок в соответствии со std::less. Слияние стабильно; то есть, если элемент из *это эквивалентно элементу из x, то элемент из *это будет предшествовать элементу из x.

    Бросает: Если std::lessбросок. Основная гарантия.

    Сложность: Эта функция является линейным временем: она выполняет максимум размер() + x.size() - 1 сравнение.

    Примечание: Итераторы и ссылки не являются недействительными

    .
  48. <
    template<typenamePredicate>voidmerge(list&x,Predicatep);
    >

    Требуется: p должна быть функцией сравнения, которая вызывает строгую слабую упорядоченность, и как это, так и x должны быть отсортированы в соответствии с этой упорядоченностью. Списки x и * это должны быть различными.

    Эффекты: Эта функция удаляет все элементы x и вставляет их в *это. Слияние стабильно; то есть, если элемент из * это эквивалентно элементу из x, то элемент из * это будет предшествовать элементу из x.

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

    Сложность: Эта функция является линейным временем: она выполняет максимум размер() + x.size() - 1 сравнение.

    Примечание: Итераторы и ссылки не являются недействительными.

  49. <
    voidreverse();
    >

    Эффекты: Обратный порядок элементов в списке.

    Бросает: Ничего.

    Сложность: Эта функция является линейным временем.

    Примечание: Итераторы и ссылки не являются недействительными

    .
  50. <
    voidremove(const_referencevalue);
    >

    Эффекты: Удалите все элементы, которые сравниваются с ценностью. Разрушители не называются.

    Броски: Если std::equal_toбросок. Основная гарантия.

    Сложность: Линейное время. Он выполняет точное сравнение размеров () для равенства.

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

  51. <
    template<typenameDisposer>
     voidremove_and_dispose(const_referencevalue,Disposerdisposer);
    >

    Требует: Диспетчер::оператор()(указатель) не должен бросать.

    Эффекты: Удалите все элементы, которые сравниваются с ценностью. Диспозитор::оператор()(указатель) вызывается для каждого удаленного элемента.

    Бросок: Если std::equal_toбросок. Основная гарантия.

    Сложность: Линейное время. Он выполняет точное сравнение размеров () для равенства.

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

  52. <
    template<typenamePred>voidremove_if(Predpred);
    >

    Эффекты: Удаляет все элементы, для которых удовлетворяется заданный предикат. Разрушители не называются.

    Броски: Если бы Хищник бросил. Основная гарантия.

    Сложность: Линейное время. Он выполняет точно размер() вызовов к предикату.

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

  53. <
    template<typenamePred,typenameDisposer>
     voidremove_and_dispose_if(Predpred,Disposerdisposer);
    >

    Требует: Диспетчер::оператор()(указатель) не должен бросать.

    Эффекты: Удаляет все элементы, для которых удовлетворяется заданный предикат. Диспозитор::оператор()(указатель) вызывается для каждого удаленного элемента.

    Броски: Если бы Хищник бросил. Основная гарантия.

    Сложность: Линейное время. Он выполняет точное сравнение размеров () для равенства.

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

  54. <
    voidunique();
    >

    Эффекты: Удалите соседние дублирующие элементы или соседние элементы, которые равны из списка. Деструкторы не называются.

    Бросок: Если std::equal_to

    Сложность: Линейное время (размер()-1 сравнения вызывает pred()).

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

  55. <
    template<typenameBinaryPredicate>voidunique(BinaryPredicatepred);
    >

    Эффекты: Удаляет соседние дублирующие элементы или соседние элементы, удовлетворяющие некоторому двоичному предикату из списка. Разрушители не называются.

    Броски: Если бы Хищник бросил. Основная гарантия.

    Сложность: Линейное время (размер()-1 сравнений равенства).

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

  56. <
    template<typenameDisposer>voidunique_and_dispose(Disposerdisposer);
    >

    Требует: Диспетчер::оператор()(поинт) не должен бросать.

    Эффекты: Удалите соседние дублирующие элементы или соседние элементы, которые равны из списка. Диспозитор::оператор()(указатель) вызывается для каждого удаленного элемента.

    Бросок: Если std::equal_to

    Сложность: Линейное время (размер()-1) сравнения сравнения равенства.

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

  57. <
    template<typenameBinaryPredicate,typenameDisposer>
     voidunique_and_dispose(BinaryPredicatepred,Disposerdisposer);
    >

    Требуется: Диспетчер::оператор()(пойнтеры) не должен бросать.

    Эффекты: Удаляет соседние дублирующие элементы или соседние элементы, удовлетворяющие некоторому двоичному предикату из списка. Диспозитор::оператор()(указатель) вызывается для каждого удаленного элемента.

    Бросок: Если бы Хищник бросил. Базовая гарантия.

    Сложность: Линейное время (размер()-1) сравнения сравнения равенства.

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

  58. <
    iteratoriterator_to(referencevalue);
    >

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

    Эффекты: Эта функция возвращает const_iterator, указывающий на элемент

    Бросает: Ничего.

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

    Примечание: Итераторы и ссылки не являются недействительными.

  59. <
    const_iteratoriterator_to(const_referencevalue)const;
    >

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

    Эффекты: Эта функция возвращает итератор, указывающий на элемент.

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

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

    Примечание: Итераторы и ссылки не являются недействительными.

  60. <
    voidcheck()const;
    >

    Эффекты: Утверждает целостность контейнера.

    Сложность: Линейное время.

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

list public static functions

  1. <
    staticlist&container_from_end_iterator(iteratorend_iterator);
    >

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

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

    Бросает: Ничего.

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

  2. <
    staticconstlist&container_from_end_iterator(const_iteratorend_iterator);
    >

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

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

    Бросает: Ничего.

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

  3. <
    staticiterators_iterator_to(referencevalue);
    >

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

    Эффекты: Эта функция возвращает const_iterator, указывающий на элемент

    Бросает: Ничего.

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

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

  4. <
    staticconst_iterators_iterator_to(const_referencevalue);
    >

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

    Эффекты: Эта функция возвращает итератор, указывающий на элемент.

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

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

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


PrevUpHomeNext

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 19:30:12/0.037286043167114/1