Boost Pointer Container Library Boost , ,
Pointer Container Library
Этот класс используется для создания пользовательских контейнеров указателей с базовым картографическим контейнером. Интерфейс класса является расширением интерфейса отassociative_ptr_container .
Иерархия:
Навигация:
Синопсис:
namespace boost
{
template
<
class T,
class VoidPtrMap,
class CloneAllocator = heap_clone_allocator
>
class ptr_map_adapter
{
public: // typedefs
typedef VoidPtrMap::key_type key_type;
typedef T* mapped_type;
typedef T& mapped_reference;
typedef const T& const_mapped_reference;
typedef ... value_type;
typedef ... reference;
typedef ... const_reference;
typedef ... pointer;
typedef ... const_pointer;
public: // modifiers
std::pair<iterator,bool> insert( key_type& k, T* x );
template< class U >
std::pair<iterator,bool> insert( const key_type& k, std::auto_ptr<U> x );
public; // lookup
T& operator[]( const key_type& key );
T& at( const key_type& key );
const T& at( const key_type& key ) const;
public: // pointer container requirements
bool transfer( iterator object, ptr_map_adapter& from );
size_type transfer( iterator first, iterator last, ptr_map_adapter& from );
template< class Range >
size_type transfer( const Range& r, ptr_map_adapter& from );
size_type transfer( ptr_map_adapter& from );
}; // class 'ptr_map_adapter'
} // namespace 'boost'
Определены следующие типы осуществления:
typedef ... value_type;
typedef ... reference;
typedef ... const_reference;
typedef ... pointer;
typedef ... const_pointer;
Однако структура типа имитируетstd::pair s.t. можно использоватьпервый ивторой члены. Типы ссылок не являются реальными ссылками, а типы указателей не являются реальными указателями. Тем не менее, можно написать
map_type::value_type a_value = *m.begin();
a_value.second->foo();
map_type::reference a_reference = *m.begin();
a_reference.second->foo();
map_type::const_reference a_creference = *const_begin(m);
map_type::pointer a_pointer = &*m.begin();
a_pointer->second->foo();
map_type::const_pointer a_cpointer = &*const_begin(m);
Отличие отstd::map является то, что константа распространяется на указатель (то есть навторой ) вconst_itertor .
std::pair вставить key_type& k, значение_type x ;
Требования:x != 0
Эффекты: берет на себя ответственностьх и вставляет его iff, его эквивалента уже нет. Часть болта возвращаемого значения указывает на вставку, а итератор указывает на элемент с ключомx .
Броски: bad_pointer, еслиx == 0
Безопасность: сильная гарантия
шаблон< класс U > std::pair вставить const ключ_type& k, std::auto_ptr x ;
Эквивалентно [но безconst_cast ):возврат вставка const_cast(k), x.release() ;
bool transfer iterator объект, ptr_map_adapter& из ;
Требования:не от.empty()
Эффекты: Вставляет объект, определенный , в контейнер и удаляет его изиз .
Возвращение: был ли передан объект
Безопасность: сильная гарантия
размер_тип перенос итератор первый, итератор последний, ptr__set_adapter& от ;
Требования:не от.empty()
Эффекты: Вставляет объекты, определенные диапазоном[первый, последний] в контейнер и удаляет его изиз . Объект передается только в том случае, если не существует эквивалентного объекта.
Возврат: количество переданных объектов
Безопасность: Базовая гарантия
шаблон< класс диапазон пустота передача конст конст r, ptr_map_adapter & от от Эффекты:возвращение передача повышение::gin(r), повышение::end(r), от от
размер_тип перенос [ ptr_set_adapter& от ;
Эффекты:возврат перенос от.begin(), от.end(), от ] .
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.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: ::