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

Sets and Maps

Boost , Chapter 1. Boost.Icl , Concepts

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
A Set Concept

В фундаментальном аспекте все<interval_sets>являются моделями понятия<Set>. Понятие<Set>Интервальной библиотеки шаблонов относится к математическому понятию множества.

Функция

Вариант

реализованный как

Пустой набор

Set::Set()

Соотношение подмножеств

<boolSet::within(const Set& s1, constSet&s2)const>

equality

bool is_element_equal(const Set& s1, const Set& s2)

set union

вместо

Set& operator += (Set& s1, const Set& s2)

Set operator + (const Set& s1, const Set& s2)

set difference

вместо

<Set& operator-= (Set&s1,const Set& s2)>

<Setoperator -(constSet&s1,const Set& s2)>

set intersection

вместо

Set& operator &= (Set& s1, const Set& s2)

Set operator & (const Set& s1, const Set& s2)

Равенство на<Sets>не реализуется как<operator==>, поскольку<operator==>используется для более сильного лексикографического равенства на сегментах, что учитывает сегментацию элементов.

Будучи моделями понятий<Set>,<std::set>и все<interval_sets>осуществляют эти операции и подчиняются связанным с ними законам<Sets>. См., например,алгебра множеств здесь.

Making intervals complete

<interval>также рассматривается как набор элементов. В отношении представленного выше<Set>понятия<interval>реализуется понятие лишь частично. Причина этого в том, что сложение и вычитание не могут быть определены на<intervals>. Два интервала<[1,2]>и<[4,5]>не могут быть добавлены кодному<interval>. Иными словами,<intervals>являются неполными w.r.t. союз и различие.<Interval_sets>можно определить какзавершениеинтервалов для операций соединения и разности.

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

A Map Concept

По фундаментальному аспекту<icl::map>и все<interval_maps>являются моделями понятия<Map>. Поскольку<map>является<setofpairs>, мы пытаемся разработать<Map>концепцию в соответствии с<Set>концепцией выше.

Функция

Вариант

реализованный как

empty map

Map::Map()

Соотношение подмножеств

bool within(const Map& s2, const Map& s2)const

equality

bool is_element_equal(const Map& s1, const Map& s2)

map union

вместо

Map& operator += (Map& s1, const Map& s2)

Map operator + (const Map& s1, const Map& s2)

map difference

вместо

<Map& operator-= (Map&s1,const Map& s2)>

Map operator - (const Map& s1, const Map& s2)

map intersection

вместо

Map& operator &= (Map& s1, const Map& s2)

Map operator & (const Map& s1, const Map& s2)

Как видно, на абстрактном ядре подписи понятий icl<Set>и<Map>идентичны, за исключением названия типа. При этом подписи идентичны Наборы действительных законов различны, что более подробно будет описано в разделах посемантике icl SetsиMaps. Эти семантические различия в основном основаны на реализации основных функций<add>и<subtract>для элементов и интервалов, которые снова служат для реализации<operator +=>и<operator -=>.


PrevUpHomeNext

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




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



:: Главная :: Concepts ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 01:43:15/0.004302978515625/0