Boost Pointer Container Library Boost , ,
Pointer Container Library
В этом разделе описаны все общие операции для всех последовательностей указателей:
ptr_sequence_adapter также является конкретным классом, который можно использовать для создания пользовательских контейнеров указателей.
Иерархия:
Навигация:
Синопсис:
namespace boost
{
template
<
class T,
class VoidPtrSeq,
class CloneAllocator = heap_clone_allocator
>
class ptr_sequence_adapter
{
public: // construct/copy/destroy
template< class InputIterator >
assign( InputIterator first, InputIterator last );
template< class InputRange >
assign( const InputRange& e );
public: // element access
T& front();
const T& front() const;
T& back();
const T& back() const;
public: // modifiers
void push_back( T* x );
template< class U >
void push_back( std::auto_ptr<U> x );
auto_type pop_back();
iterator insert( iterator position, T* x );
template< class U >
iterator insert( iterator position, std::auto_ptr<U> x );
template< class InputIterator >
void insert( iterator position, InputIterator first, InputIterator last );
template< class InputRange >
void insert( iterator position, const InputRange& r );
iterator erase( iterator position );
iterator erase( iterator first, iterator last );
template< class Range >
iterator erase( const Range& r );
void resize( size_type size );
void resize( size_type size, T* to_clone );
public: // pointer container requirements
template< class PtrSequence >
void transfer( iterator before, typename PtrSequence::iterator object,
PtrSequence& from );
template< class PtrSequence >
void transfer( iterator before, typename PtrSequence::iterator first, typename PtrSequence::iterator last,
PtrSequence& from );
void template< class PtrSequence, class Range >
void transfer( iterator before, const Range& r, PtrSequence& from );
template< class PtrSequence >
void transfer( iterator before, PtrSequence& from );
public: // algorithms
void sort();
void sort( iterator first, iterator last );
template< class Compare >
void sort( Compare comp );
template< class Compare >
void sort( iterator begin, iterator end, Compare comp );
void unique();
void unique( iterator first, iterator last );
template< class Compare >
void unique( Compare comp );
template< class Compare >
void unique( iterator begin, iterator end, Compare comp );
template< class Pred >
void erase_if( Pred pred );
template< class Pred >
void erase_if( iterator begin, iterator end, Pred pred );
void merge( ptr_sequence_adapter& r );
template< class Compare >
void merge( ptr_sequence_adapter& r, Compare comp );
void merge( iterator first, iterator last, ptr_sequence_adapter& from );
template< class Compare >
void merge( iterator first, iterator last, ptr_sequence_adapter& from, Compare comp );
public: // ptr_list interface
public: // ptr_vector interface
public: // ptr_deque interface
}; // class 'ptr_sequence_adapter'
} // namespace 'boost'
шаблон< класс Итератор ввода > недействительный присваивает Итератор ввода первый, Итератор ввода последний ;
Требования:(первый, последний] является допустимым диапазоном
ясно (); вставить сначала, последним ;
размер [] == std:: расстояние первый, последний ;
Безопасность: надежная гарантия
шаблон< класс InputRange void присвоить const Const InputRange & r ;
Эффекты:присвоитьпридать ускорение::gin(r), придать ускорение::end(r) ;
T& front();
Требования:не пустой();
Эффекты:возврат * начало();
const T& front() const;
Требования:не пустой();
Эффекты:возврат * начало();
T& back();
Требования:не пустой();
Эффекты:возврат *-конец();
const T& back() const;
Требования:не пустой();
Эффекты:возврат *-конец();
auto_type pop_back();
Требования:не пустой()
Эффекты: удаление последнего элемента в контейнере
размер() на один меньше
Броски:bad_ptr_container_operation , еслипустой() == истинный
Безопасность: сильная гарантия
итератор вставить итератор положение, T* x ;
Требования:положение является действительным итератором из контейнера иx != 0
Эффекты: вставляетx передположением и возвращает итератор, указывающий на него
Броски:bad_pointer , еслиx == 0
Безопасность: сильная гарантия
шаблон< класс > итератор вставка итератор положение положение положение положение положение положение положение положение положениеположение положениеположение положениеположениеположение положениеположение положениеположениеположение положениеположение[
шаблон< класс InputIterator > пустота вставка итератор положение положение InputIterator первое, InputIterator последнее последнее
Требования:положение является действительным итератором из контейнера
Эффекты: Вставляет клонированный диапазон доположения
Безопасность: сильная гарантия
шаблон< класс > void вставка итератор положение, конст конст r
Эффекты:положение, повышение::начало(r), повышение::конец(r)
итератор итератор положение положение ;
Требования:положение является действительным итератором из контейнера
Эффекты: удаляет элемент, определенный поположению и возвращает итератор к следующему элементу
Альбом: Nothing
итератор стирает итератор первый, итератор последний ;
Требования:[первый, последний] является допустимым диапазоном
Эффекты: удаляет диапазон элемента, определенный[первый, последний] и возвращает итератор следующему элементу
Альбом: Nothing
шаблон< класс > пустота стирание const Range & r ;
Эффекты:стирание повышение::gin(r), повышение::end(r) ;
void resize size_type size ;
Effects: Resizes the container. Если элементы стираются, это происходит со спины. Если элементы вставлены, это происходит сзади.
Требования:T является конструктивным по умолчанию
Постусловие:размер() == размер;
Безопасность исключения: Базовая гарантия при расширении; гарантия Nothrow в противном случае
void resize size_type size, T* to_clone ;
Эффекты: размер контейнера. Если элементы стираются, это происходит со спины. Если элементы вставлены, клоны*-клон вставляются сзади.
Постусловие:размер() == размер;
Безопасность исключения: Базовая гарантия при расширении; гарантия Nothrow в противном случае
Замечания:to_clone == 0 действителен, если контейнер поддерживает нули. Контейнер не является владельцемto_clone .
Вы можете использовать для перемещения элементов между двумя контейнерами одного типа. Кроме того, вы также можете перемещать элементы из контейнера типаT в контейнер типаU до.T::value_type конвертируется вU::value_type . Примером может служить переход отboost::ptr_vector кboost::ptr_deque .
Замечание: При перемещении элементов между двумя различными контейнерами вы должны убедиться, что распределители совместимы. Специальная широта передачи между двумя различными контейнерами доступна только для последовательностей, а не для ассоциативных контейнеров.
шаблон< класс PtrSequence > пустота передача итератор ранее, , PtrSequence::iterator объект, PtrSequence& из ;
Эффекты: Вставляет объект, определенныйобъект в контейнер и удаляет его изиз . Введение происходит додо .
Еслииз ничего не происходит. В противном случаеразмер больше,от меньше.
Безопасность: сильная гарантия
шаблон< класс PtrSequence > пустота передача итератор раньше, имя типа PtrSequence::iterator first, typename PtrSequence::iterator last, PtrSequence& from ;
Требования:from.size() >= std::distance(first,last)
Эффекты: Вставляет объекты, определенные диапазоном[первый, последний] в контейнер и удалить его изиз . Введение происходит додо .
Еслиот ничего не происходит. Иначе пустьN == std:::расстояние (первое, последнее); тогдаразмер() N больше,от размера() меньшеN меньше.
Безопасность: сильная гарантия
Сложность: линейная или лучше
пустой шаблон< PtrSequence, класс пустой итератор перед, итератор конст Range& r, PtrSequence&от от от
Эффекты:повышение:: Начало [r], повышение:: конец [r], от; [820
шаблон< класс PtrSequence> void перенос итератор до, PtrSequence& от от ;
Эффекты:перенос [до, от, от; от;от; ототот отот [87
Общим требованием для этих алгоритмов является то, что контейнерне содержит никаких нулей .
void sort();
void sort iterator first, iterator last ;
шаблон< класс Сравните > пустота сорт Сравните комп ;
шаблон< класс Сравните > пустота сорт итератор начало, итератор конец, Сравните комп ;
Требования: (версии безСравнить )bool operator< const T&, const T& ]
Требования: [Сравнить версий]Сравнить должен принятьконст T& аргументы
Эффекты: сортирует весь контейнер или указанный диапазон
Безопасность исключения: гарантия нотроу (поведение не определено, если оператор сравнения бросает)
Замечания: Версиисорт() , которые принимают два итератора, недоступны дляptr_list
void unique();
пустой уникальный итератор первый, итератор последний ;
шаблон< класс Сравните > пустота уникальна Сравните комп ;
шаблон< класс Сравните > пустота уникальный итератор начинается, итератор конец Сравните комп
Требования: (варианты безСравнить )bool оператор == const T&, const T& ]
Требования: [Сравнить версий]Сравнить должен принятьконст T& аргументы
Эффекты: удаление смежных и равных объектов из всего контейнера или указанного диапазона
Безопасность исключения: гарантия нотроу (поведение не определено, если оператор сравнения бросает)
шаблон< класс Pred > void erase_if Pred pred ;
шаблон< класс > пустота итератор итератор конец, итератор конец, Пред Пред
Требования: должен принятьконст T& аргумент
Эффекты: удаляет все элементыt , для которыхpred(t) возвращаетистинное из всего контейнера или указанного диапазона
Безопасность исключения: гарантия нотроу (поведение не определено, если оператор сравнения бросает)
пустота слияние ptr_sequence_adapter& r ;
шаблон< класс Сравните > пустота слияние ptr_sequence_adapter& r, Сравните комп ;
void merge iterator first, iterator last, ptr_sequence_adapter& from ;
template< class Compare > void merge( iterator first, iterator last, ptr_sequence_adapter& from, Compare comp );
Требования: [Сравнить версий]Сравнить должен принятьконст T& аргументы
Требования: обе последовательности сортируются по wrt. Тот же предикат
Эффекты: перенос всего контейнера или указанной последовательности в контейнер при обеспечении сортировки новой последовательности
Пост-условия: (Контейнерные версии)r.empty()
Безопасность исключения: гарантия нотроу (поведение не определено, если оператор сравнения бросает)
Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt ).
Статья Boost Pointer Container Library раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: ::