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

Boost Pointer Container Library

Boost , ,

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

Boost Pointer Container Library

Class ptr_sequence_adapter

В этом разделе описаны все общие операции для всех последовательностей указателей:

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'

Semantics

Semantics: construct/copy/destroy

  • шаблон<классИтератор ввода>недействительныйприсваиваетИтератор вводапервый,Итератор вводапоследний;

    • Требования:(первый, последний]является допустимым диапазоном
    • ясно ();вставитьсначала,последним;
    • размер []==std:: расстояниепервый,последний;
    • Безопасность: надежная гарантия
  • шаблон<классInputRangevoidприсвоитьconstConstInputRange &r;

  • Эффекты:присвоитьпридать ускорение::gin(r),придать ускорение::end(r);

Semantics: element access

  • T&front();

  • Требования:непустой();
  • Эффекты:возврат* начало();
  • constT&front()const;

    • Требования:непустой();
    • Эффекты:возврат* начало();
  • T&back();

    • Требования:непустой();
    • Эффекты:возврат*-конец();
  • constT&back()const;

    • Требования:непустой();
    • Эффекты:возврат*-конец();
  • Semantics: modifiers

    • voidpush_backT*x;

      • Требования:x!=0
      • Эффекты: вставляет указатель в контейнер и приобретает право собственности на него.
      • Броски:bad_pointer, еслиx==0
      • Безопасность: сильная гарантия
    • шаблон<классU>voidpush_backstd::auto_ptrx;

      • Эффекты:push_backx.release();
    • auto_typepop_back();

    • Требования:непустой()
    • Эффекты: удаление последнего элемента в контейнере
    • размер()на один меньше
    • Броски:bad_ptr_container_operation, еслипустой()==истинный
    • Безопасность: сильная гарантия
  • итераторвставитьитераторположение,T*x;

    • Требования:положениеявляется действительным итератором из контейнера иx!=0
    • Эффекты: вставляетxпередположениеми возвращает итератор, указывающий на него
    • Броски:bad_pointer, еслиx==0
    • Безопасность: сильная гарантия
  • шаблон<класс>итераторвставкаитераторположениеположениеположениеположениеположениеположениеположениеположениеположениеположениеположениеположениеположениеположениеположениеположениеположениеположениеположениеположениеположениеположение[

    • шаблон<классInputIterator>пустотавставкаитераторположениеположениеInputIteratorпервое,InputIteratorпоследнеепоследнее

      • Требования:положениеявляется действительным итератором из контейнера
      • Эффекты: Вставляет клонированный диапазон доположения
      • Безопасность: сильная гарантия
    • шаблон<класс>voidвставкаитераторположение,констконстr

      • Эффекты:положение,повышение::начало(r),повышение::конец(r)
    • итераторитераторположениеположение;

      • Требования:положениеявляется действительным итератором из контейнера
      • Эффекты: удаляет элемент, определенный поположениюи возвращает итератор к следующему элементу
      • Альбом: Nothing
    • итераторстираетитераторпервый,итераторпоследний;

      • Требования:[первый, последний]является допустимым диапазоном
      • Эффекты: удаляет диапазон элемента, определенный[первый, последний]и возвращает итератор следующему элементу
      • Альбом: Nothing
    • шаблон<класс>пустотастираниеconstRange &r;

      • Эффекты:стираниеповышение::gin(r),повышение::end(r);
    • voidresizesize_typesize;

      • Effects: Resizes the container. Если элементы стираются, это происходит со спины. Если элементы вставлены, это происходит сзади.
      • Требования:Tявляется конструктивным по умолчанию
      • Постусловие:размер()==размер;
      • Безопасность исключения: Базовая гарантия при расширении; гарантия Nothrow в противном случае
    • voidresizesize_typesize,T*to_clone;

      • Эффекты: размер контейнера. Если элементы стираются, это происходит со спины. Если элементы вставлены, клоны*-клонвставляются сзади.
      • Постусловие:размер()==размер;
      • Безопасность исключения: Базовая гарантия при расширении; гарантия Nothrow в противном случае
      • Замечания:to_clone==0действителен, если контейнер поддерживает нули. Контейнер не является владельцемto_clone.

    Semantics: pointer container requirements

    Вы можете использоватьдля перемещения элементов между двумя контейнерами одного типа. Кроме того, вы также можете перемещать элементы из контейнера типаTв контейнер типаUдо.T::value_typeконвертируется вU::value_type. Примером может служить переход отboost::ptr_vectorкboost::ptr_deque.

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

    • шаблон<классPtrSequence>пустотапередачаитераторранее,,PtrSequence::iteratorобъект,PtrSequence&из;

      • Эффекты: Вставляет объект, определенныйобъектв контейнер и удаляет его изиз. Введение происходит додо.
      • Еслиизничего не происходит. В противном случаеразмербольше,отменьше.
      • Безопасность: сильная гарантия
    • шаблон<классPtrSequence>пустотапередачаитераторраньше,имя типаPtrSequence::iteratorfirst,typenamePtrSequence::iteratorlast,PtrSequence&from;

      • Требования:from.size()>=std::distance(first,last)
      • Эффекты: Вставляет объекты, определенные диапазоном[первый, последний]в контейнер и удалить его изиз. Введение происходит додо.
      • Еслиотничего не происходит. Иначе пустьN==std:::расстояние (первое, последнее);тогдаразмер()Nбольше,от размера()меньшеNменьше.
      • Безопасность: сильная гарантия
      • Сложность: линейная или лучше
    • пустойшаблон<PtrSequence,класспустойитераторперед,итераторконстRange&r,PtrSequence&ототот

      • Эффекты:повышение:: Начало [r],повышение:: конец [r],от;[820
    • шаблон<классPtrSequence>voidпереноситератордо,PtrSequence&отот;

      • Эффекты:перенос [до,от,от;от;от;ототототот [87

    Semantics: algorithms

    Общим требованием для этих алгоритмов является то, что контейнерне содержит никаких нулей.

    • voidsort();

    • voidsortiteratorfirst,iteratorlast;

    • шаблон<классСравните>пустотасортСравнитекомп;

    • шаблон<классСравните>пустотасортитераторначало,итераторконец,Сравнитекомп;

      • Требования: (версии безСравнить)booloperator<constT&,constT&]
      • Требования: [Сравнитьверсий]Сравнитьдолжен принятьконстT&аргументы
      • Эффекты: сортирует весь контейнер или указанный диапазон
      • Безопасность исключения: гарантия нотроу (поведение не определено, если оператор сравнения бросает)
      • Замечания: Версиисорт(), которые принимают два итератора, недоступны дляptr_list
    • voidunique();

    • пустойуникальныйитераторпервый,итераторпоследний;

    • шаблон<классСравните>пустотауникальнаСравнитекомп;

    • шаблон<классСравните>пустотауникальныйитераторначинается,итераторконецСравнитекомп

      • Требования: (варианты безСравнить)boolоператор ==constT&,constT&]
      • Требования: [Сравнитьверсий]Сравнитьдолжен принятьконстT&аргументы
      • Эффекты: удаление смежных и равных объектов из всего контейнера или указанного диапазона
      • Безопасность исключения: гарантия нотроу (поведение не определено, если оператор сравнения бросает)
    • шаблон<классPred>voiderase_ifPredpred;

    • шаблон<класс>пустотаитераторитераторконец,итераторконец,ПредПред

      • Требования:должен принятьконстT&аргумент
      • Эффекты: удаляет все элементыt, для которыхpred(t)возвращаетистинноеиз всего контейнера или указанного диапазона
      • Безопасность исключения: гарантия нотроу (поведение не определено, если оператор сравнения бросает)
    • пустотаслияниеptr_sequence_adapter&r;

    • шаблон<классСравните>пустотаслияниеptr_sequence_adapter&r,Сравнитекомп;

    • voidmergeiteratorfirst,iteratorlast,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.




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



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


    реклама


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

    Время компиляции файла: 2024-08-30 11:47:00
    2025-05-20 06:50:51/0.01094913482666/1