boost/libs/icl/doc/html/boost_icl/concepts.html
2021-10-05 21:37:46 +02:00

180 lines
11 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Concepts</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Chapter 1. Boost.Icl">
<link rel="up" href="../index.html" title="Chapter 1. Boost.Icl">
<link rel="prev" href="projects.html" title="Projects">
<link rel="next" href="concepts/aspects.html" title="Aspects">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="projects.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="concepts/aspects.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_icl.concepts"></a><a class="link" href="concepts.html" title="Concepts">Concepts</a>
</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="concepts.html#boost_icl.concepts.naming">Naming</a></span></dt>
<dt><span class="section"><a href="concepts/aspects.html">Aspects</a></span></dt>
<dt><span class="section"><a href="concepts/sets_and_maps.html">Sets and Maps</a></span></dt>
<dt><span class="section"><a href="concepts/aggrovering.html">Addability, Subtractability
and Aggregate on Overlap</a></span></dt>
<dt><span class="section"><a href="concepts/map_traits.html">Map Traits</a></span></dt>
</dl></div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_icl.concepts.naming"></a><a class="link" href="concepts.html#boost_icl.concepts.naming" title="Naming">Naming</a>
</h3></div></div></div>
<p>
The <span class="bold"><strong>icl</strong></span> is about sets and maps and a useful
implementation of sets and maps using intervals. In the documentation of
the <span class="bold"><strong>icl</strong></span> the different set and map types
are grouped in various ways. In order to distinguish those groups we use
a naming convention.
</p>
<p>
Names of concepts start with a capital letter. So <code class="computeroutput"><span class="identifier">Set</span></code>
and <code class="computeroutput"><span class="identifier">Map</span></code> stand for the <span class="emphasis"><em>concept</em></span>
of a set and a map as defined in the <span class="bold"><strong>icl</strong></span>.
When we talk about <code class="computeroutput"><span class="identifier">Sets</span></code> and
<code class="computeroutput"><span class="identifier">Maps</span></code> though, most of the
time we do not not talk about the concepts themselves but the set of types
that implement those concepts in the <span class="bold"><strong>icl</strong></span>.
The main groups, <span class="emphasis"><em><span class="bold"><strong>icl containers</strong></span></em></span>
can be divided in, are summarized in the next table:
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead><tr></tr></thead>
<tbody>
<tr>
<td>
</td>
<td>
<p>
<code class="computeroutput"><span class="identifier">Set</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="identifier">Map</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
element container
</p>
</td>
<td>
<p>
<a href="http://www.cplusplus.com/reference/stl/set/" target="_top"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">set</span></code> </a>
</p>
</td>
<td>
<p>
<code class="computeroutput"><a class="link" href="../boost/icl/map.html" title="Class template map">icl::map</a></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
interval container
</p>
</td>
<td>
<p>
<code class="computeroutput"><a class="link" href="../boost/icl/interval_set.html" title="Class template interval_set">interval_set</a></code>,
<code class="computeroutput"><a class="link" href="../boost/icl/separate_interval_set.html" title="Class template separate_interval_set">separate_interval_set</a></code>,
<code class="computeroutput"><a class="link" href="../boost/icl/split_interval_set.html" title="Class template split_interval_set">split_interval_set</a></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><a class="link" href="../boost/icl/interval_map.html" title="Class template interval_map">interval_map</a></code>,
<code class="computeroutput"><a class="link" href="../boost/icl/split_interval_map.html" title="Class template split_interval_map">split_interval_map</a></code>
</p>
</td>
</tr>
</tbody>
</table></div>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Containers std:set, <code class="computeroutput"><a class="link" href="../boost/icl/interval_set.html" title="Class template interval_set">interval_set</a></code>,
<code class="computeroutput"><a class="link" href="../boost/icl/separate_interval_set.html" title="Class template separate_interval_set">separate_interval_set</a></code>,
<code class="computeroutput"><a class="link" href="../boost/icl/split_interval_set.html" title="Class template split_interval_set">split_interval_set</a></code>
are models of concept <code class="computeroutput"><span class="identifier">Set</span></code>.
</li>
<li class="listitem">
Containers <code class="computeroutput"><a class="link" href="../boost/icl/map.html" title="Class template map">icl::map</a></code>, <code class="computeroutput"><a class="link" href="../boost/icl/interval_map.html" title="Class template interval_map">interval_map</a></code>, <code class="computeroutput"><a class="link" href="../boost/icl/split_interval_map.html" title="Class template split_interval_map">split_interval_map</a></code>
are models of concept <code class="computeroutput"><span class="identifier">Map</span></code>.
</li>
<li class="listitem">
Containers that are <span class="emphasis"><em><span class="bold"><strong>implemented</strong></span></em></span>
using elements or element value pairs are called <span class="emphasis"><em><span class="bold"><strong>element containers</strong></span></em></span>.
</li>
<li class="listitem">
Containers that are <span class="emphasis"><em><span class="bold"><strong>implemented</strong></span></em></span>
using intervals or interval value pairs (also called segments) are called
<span class="emphasis"><em><span class="bold"><strong>interval containers</strong></span></em></span>.
</li>
<li class="listitem">
When we talk about <code class="computeroutput"><span class="identifier">Sets</span></code>
or <code class="computeroutput"><span class="identifier">Maps</span></code> we abstract from
the way they are implemented.
</li>
<li class="listitem">
When we talk about <span class="emphasis"><em>element containers</em></span> or <span class="emphasis"><em>interval
containers</em></span> we refer to the way they are implemented.
</li>
<li class="listitem">
<a href="http://www.cplusplus.com/reference/stl/set/" target="_top"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">set</span></code> </a> is a model of the icl's
<code class="computeroutput"><span class="identifier">Set</span></code> concept.
</li>
<li class="listitem">
<a href="http://www.cplusplus.com/reference/stl/set/" target="_top"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span></code> </a> is <span class="emphasis"><em><span class="bold"><strong>not</strong></span></em></span> a model of the icl's <code class="computeroutput"><span class="identifier">Map</span></code> concept.
</li>
<li class="listitem">
The <span class="bold"><strong>icl's</strong></span> element map is always denoted
qualified as <code class="computeroutput"><a class="link" href="../boost/icl/map.html" title="Class template map">icl::map</a></code> to
avoid confusion with<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span></code>.
</li>
</ul></div>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2007-2010 Joachim
Faulhaber<br>Copyright © 1999-2006 Cortex Software
GmbH<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="projects.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="concepts/aspects.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>