Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Function Synopsis

Boost , Chapter 1. Boost.Icl , Interface

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

PrevUpHomeNext

В этом разделе однаматрицадается, что показывает всефункциис общими именами и идентичными или аналогичными семантиками и их полиморфными перегрузками по шаблонам классовicl. Чтобы получить краткое представление, рядзаполнителейиспользуются по всей матрице функций.

Цельзаполнителясостоит в том, чтобы выразить полиморфное использование функций. Первая колонкаматрицы функций содержит подписи функций. В этих подписях<T>обозначается тип контейнера и<J>и<P>полиморфные аргументы и типы результатов.

Внутри корпуса матрицы наборыболдфейсовзаполнителей обозначают наборы возможных инстанциаций для полиморфного заполнителя<P>. Например,eiSозначает, что для типа аргумента<P>элементe, интервалiили интервалSможет быть инстанциирован.

Если полиморфизм не может быть описан таким образом, показано толькочислоперегруженных реализаций для функции этой строки.

владелец

Типы аргументов

Описание

T

контейнер или интервальный тип

<P>

Тип аргумента полиморфного контейнера

<J>

Тип полиморфного итератора

K

Тип полиморфного элемента_iterator для интервальных контейнеров

<V>

various types V, that do dot fall in the categories above

1,2, ...

количество реализаций для этой функции

A

implementation generated by compilers

e

T::element_type

the element type of interval_sets or std::sets

i

T::segment_type

Тип сегмента<interval_sets>

element sets

<std::set>или другие модели концепции набора icl

S

интервал_множества

один из типов интервальных наборов

b

T::element_type

тип<interval_map's>или<icl::map's>пар значений элементов

p

T::segment_type

тип<interval_map's>пар интервальных значений

m

Элементные карты

<icl::map>Тип карты icl

M

interval_maps

one of the interval map types

d

дискретные типы

types with a least steppable discrete unit: Integral types, date/time types etc.

c

непрерывные типы

типы с (теоретически) бесконечно большим количеством элементов имеют два значения.

Table 1.13. Synopsis Functions and Overloads

ТТ

интервалыинтервалы

[ORIG_END] -->

Интервал

Интервал
карты



элемент

[ORIG_END] -->

Элемент
карты

Конструкция, копирование, уничтожение

<T::T()>

1

1

1

1

1

<T::T(constP&)>

A

eiS

b p M

1

1

<T& T::operator=(constP&)>

A

S

М

1

1

<voidT::swap(T&)>

1

1

1

1

Содержание

интервалыинтервалы

[ORIG_END] -->

Интервал

Интервал
карты



элемент

[ORIG_END] -->

Элемент
карты

bool T::empty()const

1

1

1

1

<boolis_empty(const T&)>

1

1

1

1

1

bool contains(const T&, const P&)
bool within(const P&, const T&)

e i

eiS

e i S b p M

e s

b m

Эквивалентность и порядок

интервалыинтервалы

[ORIG_END] -->

Интервал

Интервал
карты



элемент

[ORIG_END] -->

Элемент
карты

<booloperator ==(constT&,const T&)>

1

1

1

1

1

<booloperator !=(constT&,const T&)>

1

1

1

1

1

<booloperator <(constT&,const T&)>

1

1

1

1

1

bool operator > (const T&, const T&)

1

1

1

1

1

<booloperator <=(constT&,const T&)>

1

1

1

1

1

bool operator >= (const T&, const T&)

1

1

1

1

1

<boolis_element_equal(const T&, constP&)>

S

М

1

1

bool is_element_less(const T&, const P&)

S

М

1

1

<boolis_element_greater(const T&, constP&)>

S

М

1

1

bool is_distinct_equal(const T&, const P&)

М

1

Size

интервалыинтервалы

[ORIG_END] -->

Интервал

Интервал
карты



элемент

[ORIG_END] -->

Элемент
карты

<size_typeT::size()const>

1

1

1

1

<size_typesize(const T&)>

1

1

1

1

1

<size_typecardinality(const T&)>

1

1

1

1

1

<difference_typelength(constT&)>

1

1

1

<size_typeiterative_size(const T&)>

1

1

1

1

size_type interval_count(const T&)

1

1

Selection

<JT::find(const P&)>

e i

e i

2

2

J find(T&, const P&)

e i

e i

codomain_type& operator[] (const domain_type&)

1

<codomain_typeoperator() (const domain_type&)const>

1

1

Диапазон

<interval_typehull(constT&)>

1

1

<Thull(const T&, constT&)>

1

domain_type lower(const T&)

1

1

1

domain_type upper(const T&)

1

1

1

<domain_typefirst(const T&)>

1

1

1

<domain_typelast(const T&)>

1

1

1

Добавление

интервалыинтервалы

[ORIG_END] -->

Интервал

Интервал
карты



элемент

[ORIG_END] -->

Элемент
карты

<T& T::add(constP&)>

e i

bp

b

<T& add(T&, constP&)>

e i

bp

e

b

<JT::add(J pos, constP&)>

i

p

b

<Jadd(T&,J pos, constP&)>

i

p

e

b

<T& operator+=(T&, constP&)>

eiS

b p M

e s

b m

T operator + (T, const P&)
T operator + (const P&, T)

eiS

b p M

e s

b m

T& operator |=( T&, const P&)

eiS

b p M

e s

b m

<Toperator |(T, constP&)>
<T operator| (const P&, T)>

eiS

b p M

e s

b m

Subtraction

T& T::subtract(const P&)

e i

bp

b

T& subtract(T&, const P&)

e i

bp

e

b

T& operator -=(T&, const P&)

eiS

e i S b p M

e s

b m

<Toperator -(T, constP&)>

eiS

e i S b p M

e s

b m

<Tleft_subtract(T,const T&)>

1

T right_subtract(T, const T&)

1

Вставка

интервалыинтервалы

[ORIG_END] -->

Интервал

Интервал
карты



элемент

[ORIG_END] -->

Элемент
карты

<VT::insert(const P&)>

e i

bp

e

b

V insert(T&, const P&)

e i

bp

e

b

J T::insert(J pos, const P&)

i

p

e

b

J insert(T&, J pos, const P&)

i

p

e

b

T& insert(T&, const P&)

eiS

b p M

e s

b m

T& T::set(const P&)

bp

1

T& set_at(T&, const P&)

bp

1

Стирание

void T::clear()

1

1

1

1

<voidclear(const T&)>

1

1

1

1

<T& T::erase(constP&)>

e i

e i b p

e

bp

<T& erase(T&, constP&)>

eiS

e i S b p M

e s

b m

<voidT::erase(iterator)>

1

1

1

1

<voidT::erase(iterator,iterator)>

1

1

1

1

Intersection

интервалыинтервалы

[ORIG_END] -->

Интервал

Интервал
карты



элемент

[ORIG_END] -->

Элемент
карты

<voidadd_intersection(T&,const T&, constP&)>

eiS

e i S b p M

T& operator &=(T&, const P&)

eiS

e i S b p M

e s

b m

T operator & (T, const P&)
T operator & (const P&, T)

i

eiS

e i S b p M

e s

b m

<boolintersects(const T&, constP&)>
<bool disjoint(constT&,const P&)>

i

eiS

e i S b p M

e s

b m

Symmetric difference

<T& T::flip(constP&)>

e i

bp

b

T& flip(T&, const P&)

e i

bp

e

b

<T& operator^=(T&, constP&)>

eiS

b p M

e s

b m

<Toperator ^(T, constP&)>
<T operator^ (const P&, T)>

eiS

b p M

e s

b m

Итерация

интервалыинтервалы

[ORIG_END] -->

Интервал

Интервал
карты



элемент

[ORIG_END] -->

Элемент
карты

<JT::begin()>

2

2

2

2

<JT::end()>

2

2

2

2

<JT::rbegin()>

2

2

2

2

<JT::rend()>

2

2

2

2

<JT::lower_bound(const key_type&)>

2

2

2

2

J T::upper_bound(const key_type&)

2

2

2

2

pair<J,J> T::equal_range(const key_type&)

2

2

2

2

Element iteration

интервалыинтервалы

[ORIG_END] -->

Интервал

Интервал
карты



элемент

[ORIG_END] -->

Элемент
карты

<Kelements_begin(T&)>

2

2

K elements_end(T&)

2

2

K elements_rbegin(T&)

2

2

<Kelements_rend(T&)>

2

2

Поток, преобразование

интервалыинтервалы

[ORIG_END] -->

Интервал

Интервал
карты



элемент

[ORIG_END] -->

Элемент
карты

<std::basic_ostreamoperator <<(basic_ostream&, constT&)>

1

1

1

1

1


Многие, но не все функции интерваловiclперечислены в таблице выше. Некоторые конкретные функции кратко изложены в следующей таблице. Для группы конструктивных функций заполнителиdобозначают дискретные типы доменов иcобозначают непрерывные типы доменов<T::domain_type>для интервала_типа<T>и типы аргументов<P>.

Table 1.14. Additional interval functions

ТТ

Дискретный
_интервал

непрерывный
_интервал

right_open
Интервал

Left_open


Интервал

Открытый
_интервал

Interval bounds

Динамика

Динамика

статический

статический

статический

статический

Form

асимметричный

асимметричный

Симметричный

Симметричный

Construction

<Tsingleton(const P&)>

d

c

d

d

d

d

<Tconstruct(const P&, constP&)>

d

c

dc

dc

d

d

<Tconstruct(const P&, constP&,interval_bounds)>

d

c

<Thull(const P&, constP&)>

d

c

dc

dc

d

d

<Tspan(const P&, constP&)>

d

c

dc

dc

d

d

<staticT right_open(constP&,const P&)>

d

c

<staticT left_open(constP&,const P&)>

d

c

<staticT closed(constP&,const P&)>

d

c

<staticT open(constP&,const P&)>

d

c

Заказы

<boolexclusive_less(const T&, constT&)>

1

1

1

1

1

1

bool lower_less(const T&, const T&)
bool lower_equal(const T&, const T&)
bool lower_less_equal(const T&, const T&)

1

1

1

1

1

1

bool upper_less(const T&, const T&)
bool upper_equal(const T&, const T&)
bool upper_less_equal(const T&, const T&)

1

1

1

1

1

1

Разное

<booltouches(const T&, constT&)>

1

1

1

1

1

1

<Tinner_complement(const T&, constT&)>

1

1

1

1

1

1

<difference_typedistance(constT&,const T&)>

1

1

1

1

1

1


Element iterators for interval containers

Итераторы наинтервальных конайнерах, которые упоминаются в разделеИтерациейтаблицы синопсиса функций являютсясегментные итераторы. Они раскрывают более конкретный аспект реализации, из которого абстрагируется фундаментальный аспект. Итерация по сегментам происходит быстро, по сравнению с итерацией по элементам, особенно если интервалы большие. Но если мы хотим рассматривать наши интервальные контейнеры как контейнеры элементов, которые можно использовать с помощью std::algoritms, нам нужно повторить элементы.

Итерация элементов...

  • Возможно только для интегрального или дискретного<domain_types>.
  • Он может быть очень медленным, если интервалы очень большие.

С другой стороны, иногда может потребоваться итерация через интервальные контейнеры на уровне элементов, если у вас есть некоторый интерфейс, который работает для<std::SortedAssociativeContainers>элементов, и вам нужно быстро использовать его с интервальным контейнером. Принятие более низкой производительности может быть менее беспокойным, чем настройка всего интерфейса для сегментации.

[Caution] Caution

Поэтому мы советуем вам выбирать итерацию элементов через интервальные контейнерыразумно. Не используйте итерацию элементовпо умолчанию или обычно. Всегда старайтесь достичь результатов с помощью глобальных функций или операторов пространства имен (предпочтительно, в неположенных версиях) или итерации по сегментам в первую очередь.


PrevUpHomeNext

Статья Function Synopsis раздела Chapter 1. Boost.Icl Interface может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Interface ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:00:53/0.009631872177124/0