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

Segmentational Fineness

Boost , Chapter 1. Boost.Icl , Function Reference

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

Для перегрузки таблиц на инфикс-операторах необходимо разбить<interval_sets>и<interval_maps>на шаблоны конкретных классов.

выборСииМив качестве заполнителей.

ИндексыiSiиMiпредставляют собой свойство, называемоесегментационной тонкостьюили короткойтонкостью, которая представляет собойчерту типана интервальных контейнерах.

segmentational_fineness<Si>::value == i

segmentational_fineness<Mi>::value == i

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

operator >

где

x > y   // means that
x is_finer_than y
// we have
finer                                             coarser
split_interval_set                           interval_set
                   > separate_interval_set >
split_interval_map                           interval_map

Это соотношение необходимо для разрешения инстанциации операторов фиксации (например,<Toperator +(P,Q)>для двух типов интервальных контейнеров<P>и<Q>). Если оба<P>и<Q>являются кандидатами на тип результата<T>, один из них должен быть выбран компилятором. Мы выбираем тип, который является более сегментационным, чем тип результата<T>. Таким образом, мы не теряем информацию сегмента, которая хранится вболее тонкомодном из типов контейнеров<P>и<Q>.

// overload tables for
T operator + (T, const P&)
T operator + (const P&, T)
element containers:     interval containers:
+  | e b s m            +  | e  i  b  p  S1 S2 S3 M1 M3
---+--------            ---+---------------------------
e  |     s              e  |             S1 S2 S3
b  |       m            i  |             S1 S2 S3
s  | s   s              b  |                      M1 M3
m  |   m   m            p  |                      M1 M3
                        S1 | S1 S1       S1 S2 S3
                        S2 | S2 S2       S2 S2 S3
                        S3 | S3 S3       S3 S3 S3
                        M1 |       M1 M1          M1 M3
                        M3 |       M3 M3          M3 M3

Таким образом, при поиске комбинации типов, например<T operator+ (interval_map,split_interval_map)>, которая эквивалентна<T operator+ (M1,M3)>, мы находим для типа строки<M1>и типа столбца<M3>, что<M3>будет назначен как тип результата, потому что<M3>лучше, чем<M1>. Таким образом, эта комбинация типов приведет к выбору этого типа.

split_interval_map operator + (const interval_map&, split_interval_map)

Реализация компилятором.


PrevUpHomeNext

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




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



:: Главная :: Function Reference ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 23:05:37/0.0067720413208008/0