![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Bimap ReferenceBoost , Chapter 1. Boost.Bimap , Reference
|
Тип боковой коллекции |
Тип боковой коллекции |
Включать |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Теги - это обычные типы, используемые в качестве мнемоники для типов, хранящихся в bimap
. Повышаю. Bimap использует помеченную идиому, чтобы пользователь мог указать эти теги.
namespace boost { namespace bimaps { template< class Type, typename Tag > struct tagged; // bimap template class template < class LeftCollectionType, class RightCollectionType, class AdditionalParameter_1 = detail::not_specified, class AdditionalParameter_2 = detail::not_specified > class bimap - implementation defined { : public SetView } - { public: // Metadata typedef -unspecified- left_tag; typedef -unspecified- left_map; typedef -unspecified- right_tag; typedef -unspecified- right_map; // Shortcuts // typedef -side-_map::-type- -side-_-type-; typedef -unspecified- info_type; // Map views left_map left; right_map right; // Constructors bimap(); template< class InputIterator > bimap(InputIterator first,InputIterator last); bimap(const bimap &); bimap& operator=(const bimap& b); // Projection of iterators template< class IteratorType > left_iterator project_left(IteratorType iter); template< class IteratorType > left_const_iterator project_left(IteratorType iter) const; template< class IteratorType > right_iterator project_right(IteratorType iter); template< class IteratorType > right_const_iterator project_right(IteratorType iter) const; template< class IteratorType > iterator project_up(IteratorType iter); template< class IteratorType > const_iterator project_up(IteratorType iter) const; // Support for tags template< class Tag > struct map_by; template< class Tag > map_by<Tag>::type by(); template< class Tag > const map_by<Tag>::type & by() const; template< class Tag, class IteratorType > map_by<Tag>::iterator project(IteratorType iter); template< class Tag, class IteratorType > map_by<Tag>::const_iterator project(IteratorType iter) const }; } // namespace bimap } // namespace boost
Это основной компонент Boost. Бимап.
В описаниях операций bimap
мы принимаем схему, изложенную в разделе подписи сложности.
bimap
имеет следующие типы:
left_tag, right_tag
Теги для каждой стороны карты. Если пользователь не указал какой-либо тег, по умолчанию теги
member_at::left
иmember_at::right
.
left_key_type, right_key_type
Ключевой тип каждой стороны. В
bimap<A,B>
left_key_type
являетсяA
иright_key_type
являетсяB
. Если есть теги, лучше использовать:Bimap::map_by<Tag>::key_type
.
left_data_type, right_data_type
Тип данных с каждой стороны. В бимап левый_ключ_тип B и правый_ключ_тип A. Если есть теги, лучше использовать:
Bimap::map_by<Tag>::data_type
.
left_value_type, right_value_type
Тип значения, используемый для представлений. Если есть теги, лучше использовать:
Bimap::map_by<Tag>::value_type
.
left_iterator, right_iterator left_const_iterator, right_const_iterator
Итераторы мнений. Если есть теги, лучше использовать:
Bimap::Tag>::iterator
иBimap::Tag>::const_iterator
left_map, right_map
Вид карты с каждой стороны. Если есть теги, лучше использовать:
Bimap::map_by<Tag>::type
.
bimap();
бимап
.template<typename InputIterator> bimap(InputIterator first,InputIterator last);
InputIterator
представляет собой модель Input Iterator над элементами типа relation
или типа, конвертируемого в relation
. Последнее можно получить от first
.bimap
и заполняет ее элементами в диапазоне [первый,последний)
. Вставка каждого элемента может или не может быть успешной в зависимости от принятия типами набора bimap
.[первый,последний)
.bimap(const bimap & x);
*this ==
x
. The order of the views
of the bimap
is preserved
as well.
~bimap()
bimap
и все содержащиеся элементы. Порядок, в котором разрушаются элементы, не уточняется.bimap& operator=(const bimap& x);
bimap
with copies from x.
*это==x
. Сохраняется также порядок взглядов bimap
.*this
.
ctor_args_list
не выбрасываются.Учитывая bimap
с просмотрами v1 и v2, мы говорим, что v1-iterator it1 и v2-iterator it2 эквивалентны, если:
it1 ==i1.end()
И it2 ==i2()
,it1
и it2
указывают на тот же элемент.template< class IteratorType > left_iterator project_left(IteratorType iter); template< class IteratorType > left_const_iterator project_left(IteratorType iter) const;
IteratorType
представляет собой итератор просмотра бимап. является действительным итератором некоторого представления *это
(т.е. не относится к какому-либо другому bimap
)it
.template< class IteratorType > right_iterator project_right(IteratorType iter); template< class IteratorType > right_const_iterator project_right(IteratorType iter) const;
IteratorType
представляет собой итератор просмотра бимап. является действительным итератором некоторого представления *это
(т.е. не относится к какому-либо другому bimap
)it
.template< class IteratorType > iterator project_up(IteratorType iter); template< class IteratorType > const_iterator project_up(IteratorType iter) const;
IteratorType
представляет собой итератор просмотра бимап. является действительным итератором некоторого представления *это
(т.е. не относится к какому-либо другому bimap
)it
.
template< class Tag > struct map_by;
map_by<Tag>::type
дает вид карты, помеченный Tag
. map_byTag>::
-имя типа- такое же, как map_by<::
-имя типа-.Tag
is a valid user defined name of the bimap.
template< class Tag > map_by<Tag>::type by(); template< class Tag > const map_by<Tag>::type & by() const;
Tag
is a valid user defined name of the bimap.
Tag
held by *this
.
template< class Tag, class IteratorType > map_by<Tag>::iterator project(IteratorType iter); template< class Tag, class IteratorType > map_by<Tag>::const_iterator project(IteratorType iter) const
Тэг
является действительным именем, определенным пользователем карты. IteratorType
представляет собой итератор просмотра бимап. является действительным итератором некоторого представления * этого
(т.е. не относится к какому-либо другому bimap
)Tag
held by *this
.
bimap
можно архивировать и извлекать с помощью Boost.Serialization. Повышаю. Bimap не раскрывает интерфейс публичной сериализации, как это предусмотрено Boost. Сама сериализация. Поддерживаются как обычные, так и XML-архивы.
Каждая из установленных спецификаций, включающая заданную bimap
, вносит свои собственные предварительные условия, а также гарантии на извлеченные контейнеры. При их описании используются следующие понятия. Тип T
является сериализируемым (resp. XML-сериализируемым), если любой объект типа T
может быть сохранен в выходной архив (архив XML) и позже извлечен из входного архива (архив XML), связанного с тем же хранилищем. Если x
' типа T
загружается из информации сериализации, сохраненной от другого объекта x, мы говорим, что x' представляет собой восстановленную копию Pred по сравнению с (T,T) и объекты
p
и q
, мы говорим, что q
является сериализация-совместима с p
, если
p(x,y)==q(x
для каждого x
и y
типа T
и x
и y
' восстанавливаются копии x
и y
соответственно.
b
. Если будет сделано исключение, Ар может быть оставлен в непоследовательном состоянии.b
' can impose other requirements.
Статья Bimap Reference раздела Chapter 1. Boost.Bimap Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |