Карта сайта 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_array

А.ptr_array- контейнер указателей, в котором используется базовыйусилитель::arrayдля хранения указателей. Класс полезен, когда нет необходимости в динамическом расширении и когда нет накладных расходов.

Иерархия:

Навигация:

Синопсис:

namespace boost
{      
    template
    < 
        class T, 
        size_t N, 
        CloneAllocator = heap_clone_allocator
    >
    class ptr_array : public implementation-defined
    {
    public: // construct/copy/destroy
        ptr_array();
        explicit ptr_array( const ptr_array& r );
        template< class U >
        explicit ptr_array( const ptr_array<U,N>& r );                
        explicit ptr_array( std::auto_ptr<ptr_array>& r );
        
        ptr_array& operator=( const ptr_array& r );
        template< class U >
        ptr_array& operator=( const ptr_array<U,N>& r );
        ptr_array& operator=( std::auto_ptr<this_type> r );
    public: // iterators
    public: // capacity
    public: // element access
        T&        front();
        const T&  front() const;
        T&        back();
        const T&  back() const;
        
        template< size_t idx >
        T&        at();
        template< size_t idx >
        const T&  at() const;
        T&        at( size_t );
        const T&  at( size_t );
        T&        operator[]( size_t );
        const T&  operator[]( size_t ) const;
    public: // modifiers
        void  swap( ptr_array& r );
        template< size_t idx >
        auto_type replace( T* r );
        template< size_t idx, class U >
        auto_type replace( std::auto_ptr<U> r );
        auto_type replace( size_t idx, T* r );
        template< class U >
        auto_type replace( size_t idx, std::auto_ptr<U> r );
    public: // pointer container requirements
        std::auto_ptr<ptr_array>  clone() const;    
        std::auto_ptr<ptr_array>  release();
        template< size_t idx >
        bool                      is_null() const;
        bool                      is_null( size_t idx ) const;
     
    }; //  class 'ptr_sequence_adapter'
} // namespace 'boost'  

Semantics

Semantics: construct/copy/destroy

  • ptr_array();

    • Эффекты: конструирует массив, где каждый элемент равен нулю
  • эксплицитноptr_arrayconstptr_array&r;

  • шаблон<классU>эксплицитныйptr_arrayconstptr_array&r;

    • Эффекты: Построение массива путем клонированияr
  • ptr_arraystd::auto_ptr&r;

    • Эффекты: взять на себя ответственность за предоставленные указатели
  • ptr_array&оператор =constptr_array&r;

  • шаблон<классU>ptr_array&оператор =constptr_array&r

    • Эффекты: Назначает клонr
    • Безопасность: сильная гарантия
  • ptr_array&оператор =std::auto_ptrr;

    • Эффекты: взять на себя ответственность за предоставленные указатели
    • Альбом: Nothing

Semantics: element access

  • T&         front();

  • constT&front()const;

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

  • constT&back()const;

    • Требования:непустой();
    • Эффекты:возврат*-конец();
    • Броски:bad_ptr_container_operation, еслипустой()==истинный
  • template<size_tidx>T&           atsize_typen;

  • template<size_tidx>constT&atsize_typenconst;

    • Требования:idx<размер()(принужденное время компиляции)
    • Эффекты: возвращает ссылку наn'th элемент
    • Альбом: Nothing
  • T&           приразмер_типn;

  • constT&atsize_typen]const;

    • Требования:n<размер()
    • Эффекты: возвращает ссылку наn'th элемент
    • Броски:bad_index, еслиn>=size()
  • T&           оператор []размер_типn;

  • constT&оператор []size_typenconst;

    • Требования:n<размер()
    • Эффекты: возвращает ссылку наn'th элемент
    • Альбом: Nothing

Semantics: modifiers

  • voidswapptr_array&r;

    • Эффекты: своп двух массивов
    • Сложность: линейность
    • Альбом: Nothing
  • шаблон<размер_tidx>авто_типзаменитьT*r;

    • Требования:

      • idx<размер()(время компиляции соблюдается)
      • r!=0
    • Эффекты: возвращает объект, индексируемыйidxи заменяет егоr.

    • Бросок:bad_pointer, еслиx==0

      .
    • Безопасность исключения: надежная гарантия

  • шаблон<size_tidx,U>auto_typestdstd::auto_ptr<rr;

    • Эффекты:возвращениезаменаr.release;
  • auto_typeзаменитьsize_tidx,T*r;

    • Требования: '' x != 0 и idx< размер(''
    • Эффекты: возвращает объект, проиндексированныйidxи заменяет егоx.
    • Броски:bad_index, еслиidx>=размер()иbad_pointer, еслиx==0.
    • Безопасность: сильная гарантия
  • шаблон<класс>auto_typeзаменитьразмер_tidx,std::auto_ptrr

  • Эффекты:вернутьзаменитьidx,r.release()

Semantics: pointer container requirements

  • std::auto_ptr клон()const;

    • Эффекты: возвращает глубокую копию контейнера
    • Броски:std::bad_alloc, если памяти недостаточно для создания клона контейнера
    • Сложность: линейность
  • std::auto_ptr release();

    • Effects: Releases ownership of the container. Это отличный способ вернуть контейнер из функции.
    • Постусловия:пустой()==истинныйи все указатели нулевые
    • Броски:std::bad_alloc, если возвращаемое значение не может быть выделено
    • Безопасность: сильная гарантия
  • шаблон<размер_tidx>boolявляется_null()const;

    • Требования:idx<размер()
    • Эффекты: возвращает ли указатель в индексеidxнуль
    • Безопасность исключения: Гарантия Nothrow
  • boolis_nullsize_typeidxconst;

    • Требования:idx<размер()
    • Эффекты: возвращает ли указатель в индексеidxнуль
    • Безопасность исключения: Гарантия Nothrow

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-19 23:37:26/0.0095949172973633/1