![]() |
![]() ![]() ![]() ![]() |
![]() |
Sets and MapsBoost , Chapter 1. Boost.Icl , Concepts
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Функция |
Вариант |
реализованный как |
|---|---|---|
Пустой набор |
|
|
Соотношение подмножеств |
< |
|
|
equality |
|
|
|
set union |
вместо |
|
|
|
||
|
set difference |
вместо |
< |
< |
||
|
set intersection |
вместо |
|
|
|
Равенство на<Sets>не реализуется как<operator==>, поскольку<operator==>используется для более сильного лексикографического равенства на сегментах, что учитывает сегментацию элементов.
Будучи моделями понятий<Set>,<std::set>и все<interval_sets>осуществляют эти операции и подчиняются связанным с ними законам<Sets>. См., например,алгебра множеств здесь.
<interval>также рассматривается как набор элементов. В отношении представленного выше<Set>понятия<interval>реализуется понятие лишь частично. Причина этого в том, что сложение и вычитание не могут быть определены на<intervals>. Два интервала<[1,2]>и<[4,5]>не могут быть добавлены кодному<interval>. Иными словами,<intervals>являются неполными w.r.t. союз и различие.<Interval_sets>можно определить какзавершениеинтервалов для операций соединения и разности.
Когда мы заявляем, что сложение или вычитание не могут быть определены на интервалах, мы не рассматриваем такие вещи, как, например, интервальная арифметика, где эти операции могут быть определены, но с другой семантикой.
По фундаментальному аспекту<icl::map>и все<interval_maps>являются моделями понятия<Map>. Поскольку<map>является<setofpairs>, мы пытаемся разработать<Map>концепцию в соответствии с<Set>концепцией выше.
|
Функция |
Вариант |
реализованный как |
|---|---|---|
|
empty map |
|
|
Соотношение подмножеств |
|
|
|
equality |
|
|
|
map union |
вместо |
|
|
|
||
|
map difference |
вместо |
< |
|
|
||
|
map intersection |
вместо |
|
|
|
Как видно, на абстрактном ядре подписи понятий icl<Set>и<Map>идентичны, за исключением названия типа. При этом подписи идентичны Наборы действительных законов различны, что более подробно будет описано в разделах посемантике icl SetsиMaps. Эти семантические различия в основном основаны на реализации основных функций<add>и<subtract>для элементов и интервалов, которые снова служат для реализации<operator
+=>и<operator
-=>.
Статья Sets and Maps раздела Chapter 1. Boost.Icl Concepts может быть полезна для разработчиков на c++ и boost.
реклама |