![]() |
![]() ![]() ![]() ![]() |
![]() |
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.
реклама |