Boost Pointer Container Library Boost , ,
Pointer Container Library
Этот класс используется для создания пользовательских контейнеров указателей с базовым многокартовым контейнером. Интерфейс класса является расширением интерфейса от associative_ptr_container .
Иерархия:
Навигат:
Синопсис:
namespace boost
{
template
<
T,
class VoidPtrMultiMap,
class CloneAllocator = heap_clone_allocator
>
class ptr_multimap_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
iterator insert( key_type& k, T* x );
template< class U >
iterator insert( const key_type&, std::auto_ptr<U> x );
public: // pointer container requirements
void transfer( iterator object, ptr_multimap_adapter& from );
size_type transfer( iterator first, iterator last, ptr_multimap_adapter& from );
template< class Range >
size_type transfer( const Range& r, ptr_multimap_adapter& from );
void transfer( ptr_multimap_adapter& from );
}; // class 'ptr_multimap_adapter'
} // namespace 'boost'
typedefs :
Определены следующие типы осуществления:
typedef ... value_type;
typedef ... reference;
typedef ... const_reference;
typedef ... pointer;
typedef ... const_pointer;
Однако структура типа имитирует std::pair s.t. можно использовать first и second . Типы ссылок не являются реальными ссылками, а типы указателей не являются реальными указателями. Тем не менее, можно написать
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 .
итератор вставить key_type & k, T* x ;
Требования:x != 0
Возьмемx и вернем итератор, указывающий на него.
Броски: bad_pointer, еслиx == 0
Безопасность: сильная гарантия
шаблон< класс > итератор вставка const ключ_type& k, std::auto_ptr x ;
Эквивалентно [но безconst_cast ):возврат вставка const_cast(k), x.release() ;
void transfer iterator объект, ptr_multimap_adapter& из ;
Требования:не от.empty()
Эффекты: Вставляет объект, определенный , в контейнер и удаляет его изиз .
размер больше,от меньше.
Безопасность: сильная гарантия
void transfer iterator first, iterator last, ptr_multimap_adapter& from ;
Требования:не от.empty()
Эффекты: Вставляет объекты, определенные диапазоном[первый, последний] в контейнер и удаляет его изиз .
Постусловия: ПустьN == std:::расстояние (первое, последнее); тогдаразмер [] N больше,от N меньше.
Безопасность: Базовая гарантия
шаблон< класс диапазон void передача const r, ptr_multimap_adapter & от от
Эффекты:передача повышение::gin(r), повышение::end(r), от от от [
void transfer ptr_multimap_adapter& from ;
Эффекты:передача от.begin(), от.end(), от ; .
от .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.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: ::