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

Symmetric Difference

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

Симметричные различия

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

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

элемент
Наборы

элемент
Карты

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

ei

bp

b

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

ei

bp

e

b

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

eiS

bpM

e

бм

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

eiS

bpM

e

бм

Функции и операторы, реализующиесимметричную разницунаобъектах icl, приведены в таблице выше.

Описание симметричных различий

<Sets>

<operator^>реализуетзаданное симметричное различие

<Maps>

<operator^>реализуеткарту симметричной разностифункции, аналогичнойустановленной симметричной разности. Все пары, которые являются общими для обоих аргументов, удаляются. Все остальные объединены.

Симметрическая разницареализуется на интервальных контейнерах функцией<T& flip(T&,constP&operand)>.

flip(y,x)

Удаляет каждый элемент<y>, если он содержится в<x>. При этом не следует забывать о<x>элементах, не содержащихся в<y>. Для контейнеров icl флип также является авайлабелем в качестве мемберной функции<T&T::flip(constP&operand)>.

Допустимые комбинации типов для функции члена<T&T::flip(constP&)>можно кратко изложить втаблице перегрузокниже:

/* overload table for */           T\P| e i b p
T& T::flip(const P&)               ---+--------
T& flip(T&, const P&)               s | s
                                    m |     m
                                    S | S S
                                    M |     M M

Следующая таблица содержит характеристики сложности для функций<flip>.

Table 1.37. Time Complexity for member functions flip on icl containers

<T& T::flip(constP&)>
<T&flip(T&,const P&)>

Тип домена

Тип интервала

домен
отображение
тип

Интервал
отображение
тип

<std::set>

O(log n)

<icl::map>

O(log n)

<interval_set>
<separate_interval_set>

O(log n)

O(n)

<split_interval_set>

O(log n)

O(n)

<interval_map>
<split_interval_map>

O(log n)

O(n)


В приведенных ниже таблицах перегрузки приведены допустимые комбинации типов для<operator^=>, которые реализуютсимметричную разницу.

// overload tables for             element containers:     interval containers:
T& operator ^= (T&, const P&)      ^= | e b s m            ^= | e i b p S M
                                   ---+--------            ---+------------
                                   s  | s   s              S  | S S     S
                                   m  |   m   m            M  |     M M   M

Характеристики сложности для операторов на местах, которые реализуютсимметричную разницу, приведены в следующих таблицах, где:

n = iterative_size(y);
m = iterative_size(x); //if P is a container

Table 1.38. Time Complexity for inplace symmetric difference on element containers

<T& operator&= (T&y,const P& x)>

Тип домена

домен
отображение
тип

std::set

icl::map

<std::set>

O(log n)

O(m log n)

<icl::map>

O(log n)

O(log n)

O(m log n)

O(m log n)


Table 1.39. Time Complexity for inplace symmetric difference on interval containers

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

Тип домена

Тип интервала

домен
отображение
тип

Интервал
отображение
тип

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

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

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

O(log n)

O(n)

O(m log(n+m))

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

O(log n)

O(n)

O(log n)

O(n)

O(m log(n+m))

O(m log(n+m))


Для исправления симметричной разницы доступны следующие перегрузки:

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

Для устранения двусмысленностей между интервальными контейнерами в качестве результирующего типа выбираютболее тонкийконтейнерный тип.

See also . . .

Back to section . . .


PrevUpHomeNext

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 21:49:37/0.01000189781189/1