3 <meta http-equiv=
"Content-Type" content=
"text/html; charset=US-ASCII">
4 <title>Interface
</title>
5 <link rel=
"stylesheet" href=
"../../../../../doc/src/boostbook.css" type=
"text/css">
6 <meta name=
"generator" content=
"DocBook XSL Stylesheets V1.74.0">
7 <link rel=
"home" href=
"../index.html" title=
"Chapter 1. Boost.Icl">
8 <link rel=
"up" href=
"../index.html" title=
"Chapter 1. Boost.Icl">
9 <link rel=
"prev" href=
"semantics/concept_induction.html" title=
"Concept Induction">
10 <link rel=
"next" href=
"interface/required_concepts.html" title=
"Required Concepts">
12 <body bgcolor=
"white" text=
"black" link=
"#0000FF" vlink=
"#840084" alink=
"#0000FF">
13 <table cellpadding=
"2" width=
"100%"><tr>
14 <td valign=
"top"><img alt=
"Boost C++ Libraries" width=
"277" height=
"86" src=
"../../../../../boost.png"></td>
15 <td align=
"center"><a href=
"../../../../../index.html">Home
</a></td>
16 <td align=
"center"><a href=
"../../../../libraries.htm">Libraries
</a></td>
17 <td align=
"center"><a href=
"http://www.boost.org/users/people.html">People
</a></td>
18 <td align=
"center"><a href=
"http://www.boost.org/users/faq.html">FAQ
</a></td>
19 <td align=
"center"><a href=
"../../../../../more/index.htm">More
</a></td>
22 <div class=
"spirit-nav">
23 <a accesskey=
"p" href=
"semantics/concept_induction.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=
"interface/required_concepts.html"><img src=
"../../../../../doc/src/images/next.png" alt=
"Next"></a>
25 <div class=
"section boost_icl_interface" lang=
"en">
26 <div class=
"titlepage"><div><div><h2 class=
"title" style=
"clear: both">
27 <a name=
"boost_icl.interface"></a><a class=
"link" href=
"interface.html" title=
"Interface">Interface
</a>
28 </h2></div></div></div>
30 <dt><span class=
"section"><a href=
"interface.html#boost_icl.interface.class_templates">Class templates
</a></span></dt>
31 <dt><span class=
"section"><a href=
"interface/required_concepts.html">Required Concepts
</a></span></dt>
32 <dt><span class=
"section"><a href=
"interface/associated_types.html">Associated Types
</a></span></dt>
33 <dt><span class=
"section"><a href=
"interface/function_synopsis.html">Function Synopsis
</a></span></dt>
36 Section
<span class=
"bold"><strong>Interface
</strong></span> outlines types and functions
37 of the
<span class=
"bold"><strong>Icl
</strong></span>. Synoptical tables allow to review
38 the overall structure of the libraries design and to focus on structural equalities
39 and differences with the corresponding containers of the standard template
42 <div class=
"section boost_icl_interface_class_templates" lang=
"en">
43 <div class=
"titlepage"><div><div><h3 class=
"title">
44 <a name=
"boost_icl.interface.class_templates"></a><a class=
"link" href=
"interface.html#boost_icl.interface.class_templates" title=
"Class templates">Class templates
</a>
45 </h3></div></div></div>
47 <dt><span class=
"section"><a href=
"interface.html#boost_icl.interface.class_templates.intervals">Intervals
</a></span></dt>
48 <dt><span class=
"section"><a href=
"interface.html#boost_icl.interface.class_templates.sets">Sets
</a></span></dt>
49 <dt><span class=
"section"><a href=
"interface.html#boost_icl.interface.class_templates.maps">Maps
</a></span></dt>
51 <div class=
"section boost_icl_interface_class_templates_intervals" lang=
"en">
52 <div class=
"titlepage"><div><div><h4 class=
"title">
53 <a name=
"boost_icl.interface.class_templates.intervals"></a><a class=
"link" href=
"interface.html#boost_icl.interface.class_templates.intervals" title=
"Intervals">Intervals
</a>
54 </h4></div></div></div>
56 In the
<span class=
"bold"><strong>icl
</strong></span> we have two groups of interval
57 types. There are
<span class=
"emphasis"><em><span class=
"bold"><strong>statically bounded
</strong></span></em></span>
58 intervals,
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/right_open_interval.html" title=
"Class template right_open_interval">right_open_interval
</a></code>,
59 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/left_open_interval.html" title=
"Class template left_open_interval">left_open_interval
</a></code>,
60 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/closed_interval.html" title=
"Class template closed_interval">closed_interval
</a></code>,
61 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/open_interval.html" title=
"Class template open_interval">open_interval
</a></code>, that
62 always have the the same kind of interval borders and
<span class=
"emphasis"><em><span class=
"bold"><strong>dynamically bounded
</strong></span></em></span> intervals,
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/discrete_interval.html" title=
"Class template discrete_interval">discrete_interval
</a></code>,
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/continuous_interval.html" title=
"Class template continuous_interval">continuous_interval
</a></code> which
63 can have one of the four possible bound types at runtime.
66 <a name=
"id1098652"></a><p class=
"title"><b>Table
 1.6.
 Interval class templates
</b></p>
67 <div class=
"table-contents"><table class=
"table" summary=
"Interval class templates">
110 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/right_open_interval.html" title=
"Class template right_open_interval">right_open_interval
</a></code>
115 <code class=
"computeroutput"><span class=
"special"><</span><span class=
"keyword">class
</span>
116 <span class=
"identifier">DomainT
</span><span class=
"special">,
</span>
117 <span class=
"keyword">template
</span><span class=
"special"><</span><span class=
"keyword">class
</span><span class=
"special">></span><span class=
"keyword">class
</span> <span class=
"identifier">Compare
</span><span class=
"special">></span></code>
132 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/left_open_interval.html" title=
"Class template left_open_interval">left_open_interval
</a></code>
137 <code class=
"computeroutput"><span class=
"special"><...
</span><span class=
"identifier">same
</span>
138 <span class=
"keyword">for
</span> <span class=
"identifier">all
</span>
139 <span class=
"identifier">interval
</span> <span class=
"keyword">class
</span>
140 <span class=
"identifier">templates
</span><span class=
"special">...
></span></code>
156 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/closed_interval.html" title=
"Class template closed_interval">closed_interval
</a></code>
175 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/open_interval.html" title=
"Class template open_interval">open_interval
</a></code>
195 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/discrete_interval.html" title=
"Class template discrete_interval">discrete_interval
</a></code>
214 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/continuous_interval.html" title=
"Class template continuous_interval">continuous_interval
</a></code>
225 <br class=
"table-break"><p>
226 Not every class template works with all domain types. Use interval class
227 templates according the next table.
230 <a name=
"id1101191"></a><p class=
"title"><b>Table
 1.7.
 Usability of interval class templates for discrete
231 or continuous domain types
</b></p>
232 <div class=
"table-contents"><table class=
"table" summary=
"Usability of interval class templates for discrete
233 or continuous domain types">
282 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/right_open_interval.html" title=
"Class template right_open_interval">right_open_interval
</a></code>
307 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/left_open_interval.html" title=
"Class template left_open_interval">left_open_interval
</a></code>
333 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/closed_interval.html" title=
"Class template closed_interval">closed_interval
</a></code>
357 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/open_interval.html" title=
"Class template open_interval">open_interval
</a></code>
382 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/discrete_interval.html" title=
"Class template discrete_interval">discrete_interval
</a></code>
406 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/continuous_interval.html" title=
"Class template continuous_interval">continuous_interval
</a></code>
422 <br class=
"table-break"><p>
423 From a pragmatical point of view, the most important interval class template
424 of the
<span class=
"emphasis"><em>statically bounded
</em></span> group is
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/right_open_interval.html" title=
"Class template right_open_interval">right_open_interval
</a></code>.
425 For discrete domain types also closed intervals might be convenient. Asymmetric
426 intervals can be used with continuous domain types but
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/continuous_interval.html" title=
"Class template continuous_interval">continuous_interval
</a></code>
427 is the only class template that allows to represent a singleton interval
428 that contains only one element.
431 Use
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/continuous_interval.html" title=
"Class template continuous_interval">continuous_interval
</a></code>,
432 if you work with interval containers of countinuous domain types and you
433 want to be able to handle single values:
438 <pre class=
"programlisting"><span class=
"keyword">typedef
</span> <span class=
"identifier">interval_set
</span><span class=
"special"><</span><span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">string
</span><span class=
"special">,
</span> <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">less
</span><span class=
"special">,
</span> <span class=
"identifier">continuous_interval
</span><span class=
"special"><</span><span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">string
</span><span class=
"special">></span> <span class=
"special">></span> <span class=
"identifier">IdentifiersT
</span><span class=
"special">;
</span>
439 <span class=
"identifier">IdentifiersT
</span> <span class=
"identifier">identifiers
</span><span class=
"special">,
</span> <span class=
"identifier">excluded
</span><span class=
"special">;
</span>
440 <span class=
"identifier">identifiers
</span> <span class=
"special">+=
</span> <span class=
"identifier">continuous_interval
</span><span class=
"special"><</span><span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">string
</span><span class=
"special">>::
</span><span class=
"identifier">right_open
</span><span class=
"special">(
</span><span class=
"string">"a"</span><span class=
"special">,
</span> <span class=
"string">"c"</span><span class=
"special">);
</span>
442 <span class=
"comment">// special identifiers shall be excluded
443 </span><span class=
"identifier">identifiers
</span> <span class=
"special">-=
</span> <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">string
</span><span class=
"special">(
</span><span class=
"string">"boost"</span><span class=
"special">);
</span>
444 <span class=
"identifier">cout
</span> <span class=
"special"><<</span> <span class=
"string">"identifiers: "</span> <span class=
"special"><<</span> <span class=
"identifier">identifiers
</span> <span class=
"special"><<</span> <span class=
"identifier">endl
</span><span class=
"special">;
</span>
446 <span class=
"identifier">excluded
</span> <span class=
"special">=
</span> <span class=
"identifier">IdentifiersT
</span><span class=
"special">(
</span><span class=
"identifier">icl
</span><span class=
"special">::
</span><span class=
"identifier">hull
</span><span class=
"special">(
</span><span class=
"identifier">identifiers
</span><span class=
"special">))
</span> <span class=
"special">-
</span> <span class=
"identifier">identifiers
</span><span class=
"special">;
</span>
447 <span class=
"identifier">cout
</span> <span class=
"special"><<</span> <span class=
"string">"excluded : "</span> <span class=
"special"><<</span> <span class=
"identifier">excluded
</span> <span class=
"special"><<</span> <span class=
"identifier">endl
</span><span class=
"special">;
</span>
449 <span class=
"comment">//------ Program output: --------
450 </span><span class=
"identifier">identifiers
</span><span class=
"special">:
</span> <span class=
"special">{[
</span><span class=
"identifier">a
</span><span class=
"special">,
</span><span class=
"identifier">boost
</span><span class=
"special">)(
</span><span class=
"identifier">boost
</span><span class=
"special">,
</span><span class=
"identifier">c
</span><span class=
"special">)}
</span>
451 <span class=
"identifier">excluded
</span> <span class=
"special">:
</span> <span class=
"special">{[
</span><span class=
"identifier">boost
</span><span class=
"special">,
</span><span class=
"identifier">boost
</span><span class=
"special">]}
</span>
455 <a name=
"boost_icl.interface.class_templates.intervals.library_defaults_and_class_template__code__phrase_role__identifier__interval__phrase___code_"></a><h5>
456 <a name=
"id1101935"></a>
457 <a class=
"link" href=
"interface.html#boost_icl.interface.class_templates.intervals.library_defaults_and_class_template__code__phrase_role__identifier__interval__phrase___code_">Library
458 defaults and class template
<code class=
"computeroutput"><span class=
"identifier">interval
</span></code></a>
461 As shown in the example above, you can choose an interval type by instantiating
462 the interval container template with the desired type.
467 <pre class=
"programlisting"><span class=
"keyword">typedef
</span> <span class=
"identifier">interval_set
</span><span class=
"special"><</span><span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">string
</span><span class=
"special">,
</span> <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">less
</span><span class=
"special">,
</span> <span class=
"identifier">continuous_interval
</span><span class=
"special"><</span><span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">string
</span><span class=
"special">></span> <span class=
"special">></span> <span class=
"identifier">IdentifiersT
</span><span class=
"special">;
</span>
472 But you can work with the library default for interval template parameters
473 as well, which is
<code class=
"computeroutput"><span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">DomainT
</span><span class=
"special">,
</span><span class=
"identifier">Compare
</span><span class=
"special">>::
</span><span class=
"identifier">type
</span></code>.
475 <div class=
"informaltable"><table class=
"table">
507 <code class=
"computeroutput"><span class=
"preprocessor">#ifdef
</span></code> BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS
521 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/right_open_interval.html" title=
"Class template right_open_interval">right_open_interval
</a></code>
528 <code class=
"computeroutput"><span class=
"preprocessor">#else
</span></code>
543 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/discrete_interval.html" title=
"Class template discrete_interval">discrete_interval
</a></code>
563 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/continuous_interval.html" title=
"Class template continuous_interval">continuous_interval
</a></code>
570 So, if you are always happy with the library default for the interval type,
573 <pre class=
"programlisting"><span class=
"identifier">icl
</span><span class=
"special">::
</span><span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">MyDomainT
</span><span class=
"special">>::
</span><span class=
"identifier">type
</span> <span class=
"identifier">myInterval
</span><span class=
"special">;
</span>
576 as you standard way of declaring intervals and default parameters for interval
579 <pre class=
"programlisting"><span class=
"keyword">typedef
</span> <span class=
"identifier">interval_set
</span><span class=
"special"><</span><span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">string
</span><span class=
"special">></span> <span class=
"identifier">IdentifiersT
</span><span class=
"special">;
</span>
580 <span class=
"identifier">IdentifiersT
</span> <span class=
"identifier">identifiers
</span><span class=
"special">,
</span> <span class=
"identifier">excluded
</span><span class=
"special">;
</span>
581 <span class=
"identifier">identifiers
</span> <span class=
"special">+=
</span> <span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">string
</span><span class=
"special">>::
</span><span class=
"identifier">right_open
</span><span class=
"special">(
</span><span class=
"string">"a"</span><span class=
"special">,
</span> <span class=
"string">"c"</span><span class=
"special">);
</span>
582 <span class=
"special">.
</span> <span class=
"special">.
</span> <span class=
"special">.
</span>
587 So class template
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/interval.html" title=
"Struct template interval">interval
</a></code>
588 provides a standard way to work with the library default for intervals.
589 Via
<code class=
"computeroutput"><span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">D
</span><span class=
"special">,
</span><span class=
"identifier">C
</span><span class=
"special">>::
</span><span class=
"identifier">type
</span></code>
590 you can declare a default interval. In addition four static functions
592 <pre class=
"programlisting"><span class=
"identifier">T
</span> <span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">D
</span><span class=
"special">,
</span><span class=
"identifier">C
</span><span class=
"special">>::
</span><span class=
"identifier">right_open
</span><span class=
"special">(
</span><span class=
"keyword">const
</span> <span class=
"identifier">D
</span><span class=
"special">&,
</span> <span class=
"keyword">const
</span> <span class=
"identifier">D
</span><span class=
"special">&);
</span>
593 <span class=
"identifier">T
</span> <span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">D
</span><span class=
"special">,
</span><span class=
"identifier">C
</span><span class=
"special">>::
</span><span class=
"identifier">left_open
</span><span class=
"special">(
</span><span class=
"keyword">const
</span> <span class=
"identifier">D
</span><span class=
"special">&,
</span> <span class=
"keyword">const
</span> <span class=
"identifier">D
</span><span class=
"special">&);
</span>
594 <span class=
"identifier">T
</span> <span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">D
</span><span class=
"special">,
</span><span class=
"identifier">C
</span><span class=
"special">>::
</span><span class=
"identifier">closed
</span><span class=
"special">(
</span><span class=
"keyword">const
</span> <span class=
"identifier">D
</span><span class=
"special">&,
</span> <span class=
"keyword">const
</span> <span class=
"identifier">D
</span><span class=
"special">&);
</span>
595 <span class=
"identifier">T
</span> <span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">D
</span><span class=
"special">,
</span><span class=
"identifier">C
</span><span class=
"special">>::
</span><span class=
"identifier">open
</span><span class=
"special">(
</span><span class=
"keyword">const
</span> <span class=
"identifier">D
</span><span class=
"special">&,
</span> <span class=
"keyword">const
</span> <span class=
"identifier">D
</span><span class=
"special">&);
</span>
598 allow to construct intervals of the library default
<code class=
"computeroutput"><span class=
"identifier">T
</span>
599 <span class=
"special">=
</span> <span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">D
</span><span class=
"special">,
</span><span class=
"identifier">C
</span><span class=
"special">>::
</span><span class=
"identifier">type
</span></code>.
604 <pre class=
"programlisting"><span class=
"preprocessor">#define
</span> <span class=
"identifier">BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS
</span>
607 the library uses only statically bounded
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/right_open_interval.html" title=
"Class template right_open_interval">right_open_interval
</a></code>
608 as default interval type. In this case, the four static functions above
609 are also available, but they only move interval borders consistently, if
610 their domain type is discrete, and create an appropriate
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/right_open_interval.html" title=
"Class template right_open_interval">right_open_interval
</a></code>
613 <pre class=
"programlisting"><span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">D
</span><span class=
"special">,
</span><span class=
"identifier">C
</span><span class=
"special">>::
</span><span class=
"identifier">right_open
</span><span class=
"special">(
</span><span class=
"identifier">a
</span><span class=
"special">,
</span><span class=
"identifier">b
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"special">[
</span><span class=
"identifier">a
</span><span class=
"special">,
</span> <span class=
"identifier">b
</span><span class=
"special">)
</span> <span class=
"special">-
></span> <span class=
"special">[
</span><span class=
"identifier">a
</span> <span class=
"special">,
</span> <span class=
"identifier">b
</span> <span class=
"special">)
</span>
614 <span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">D
</span><span class=
"special">,
</span><span class=
"identifier">C
</span><span class=
"special">>::
</span> <span class=
"identifier">left_open
</span><span class=
"special">(
</span><span class=
"identifier">a
</span><span class=
"special">,
</span><span class=
"identifier">b
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"special">(
</span><span class=
"identifier">a
</span><span class=
"special">,
</span> <span class=
"identifier">b
</span><span class=
"special">]
</span> <span class=
"special">-
></span> <span class=
"special">[
</span><span class=
"identifier">a
</span><span class=
"special">++,
</span> <span class=
"identifier">b
</span><span class=
"special">++)
</span>
615 <span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">D
</span><span class=
"special">,
</span><span class=
"identifier">C
</span><span class=
"special">>::
</span> <span class=
"identifier">closed
</span><span class=
"special">(
</span><span class=
"identifier">a
</span><span class=
"special">,
</span><span class=
"identifier">b
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"special">[
</span><span class=
"identifier">a
</span><span class=
"special">,
</span> <span class=
"identifier">b
</span><span class=
"special">]
</span> <span class=
"special">-
></span> <span class=
"special">[
</span><span class=
"identifier">a
</span> <span class=
"special">,
</span> <span class=
"identifier">b
</span><span class=
"special">++)
</span>
616 <span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">D
</span><span class=
"special">,
</span><span class=
"identifier">C
</span><span class=
"special">>::
</span> <span class=
"identifier">open
</span><span class=
"special">(
</span><span class=
"identifier">a
</span><span class=
"special">,
</span><span class=
"identifier">b
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"special">(
</span><span class=
"identifier">a
</span><span class=
"special">,
</span> <span class=
"identifier">b
</span><span class=
"special">)
</span> <span class=
"special">-
></span> <span class=
"special">[
</span><span class=
"identifier">a
</span><span class=
"special">++,
</span> <span class=
"identifier">b
</span> <span class=
"special">)
</span>
621 For continuous domain types only the first of the four functions is applicable
622 that matches the library default for statically bounded intervals:
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/right_open_interval.html" title=
"Class template right_open_interval">right_open_interval
</a></code>.
623 The other three functions can not perform an appropriate tranformation
624 and will not compile.
627 <div class=
"section boost_icl_interface_class_templates_sets" lang=
"en">
628 <div class=
"titlepage"><div><div><h4 class=
"title">
629 <a name=
"boost_icl.interface.class_templates.sets"></a><a class=
"link" href=
"interface.html#boost_icl.interface.class_templates.sets" title=
"Sets">Sets
</a>
630 </h4></div></div></div>
632 The next two tables give an overview over
<span class=
"emphasis"><em><span class=
"bold"><strong>set
633 class templates
</strong></span></em></span> of the icl.
636 <a name=
"id1103191"></a><p class=
"title"><b>Table
 1.8.
 Set class templates
</b></p>
637 <div class=
"table-contents"><table class=
"table" summary=
"Set class templates">
664 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/interval_base_set.html" title=
"Class template interval_base_set">interval_sets
</a></code>
669 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/interval_set.html" title=
"Class template interval_set">interval_set
</a></code>
674 <code class=
"computeroutput"><span class=
"special"><</span><span class=
"identifier">DomainT
</span><span class=
"special">,
</span><span class=
"identifier">Compare
</span><span class=
"special">,
</span><span class=
"identifier">IntervalT
</span><span class=
"special">,
</span><span class=
"identifier">Alloc
</span><span class=
"special">></span></code>
685 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/separate_interval_set.html" title=
"Class template separate_interval_set">separate_interval_set
</a></code>
690 <code class=
"computeroutput"><span class=
"special"><</span><span class=
"identifier">DomainT
</span><span class=
"special">,
</span><span class=
"identifier">Compare
</span><span class=
"special">,
</span><span class=
"identifier">IntervalT
</span><span class=
"special">,
</span><span class=
"identifier">Alloc
</span><span class=
"special">></span></code>
701 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/split_interval_set.html" title=
"Class template split_interval_set">split_interval_set
</a></code>
706 <code class=
"computeroutput"><span class=
"special"><</span><span class=
"identifier">DomainT
</span><span class=
"special">,
</span><span class=
"identifier">Compare
</span><span class=
"special">,
</span><span class=
"identifier">IntervalT
</span><span class=
"special">,
</span><span class=
"identifier">Alloc
</span><span class=
"special">></span></code>
713 <br class=
"table-break"><p>
714 Templates and template parameters, given in the preceding table are described
715 in detail below.
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/interval_base_set.html" title=
"Class template interval_base_set">Interval_sets
</a></code>
716 represent three class templates
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/interval_set.html" title=
"Class template interval_set">interval_set
</a></code>,
717 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/separate_interval_set.html" title=
"Class template separate_interval_set">separate_interval_set
</a></code>
718 and
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/split_interval_set.html" title=
"Class template split_interval_set">split_interval_set
</a></code>
719 that all have equal template parameters.
722 <a name=
"id1104771"></a><p class=
"title"><b>Table
 1.9.
 Parameters of set class templates
</b></p>
723 <div class=
"table-contents"><table class=
"table" summary=
"Parameters of set class templates">
766 <code class=
"computeroutput"><span class=
"keyword">class
</span></code>
771 <code class=
"computeroutput"><span class=
"keyword">template
</span> <span class=
"special"><</span><span class=
"keyword">class
</span><span class=
"special">></span><span class=
"keyword">class
</span></code>
776 <code class=
"computeroutput"><span class=
"keyword">class
</span></code>
781 <code class=
"computeroutput"><span class=
"keyword">template
</span> <span class=
"special"><</span><span class=
"keyword">class
</span><span class=
"special">></span><span class=
"keyword">class
</span></code>
788 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/interval.html" title=
"Struct template interval">interval
</a></code>
793 <code class=
"computeroutput"><span class=
"identifier">DomainT
</span></code>
798 <code class=
"computeroutput"><span class=
"identifier">Compare
</span> <span class=
"special">=
</span>
799 <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">less
</span></code>
814 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/interval_base_set.html" title=
"Class template interval_base_set">interval_sets
</a></code>
819 <code class=
"computeroutput"><span class=
"identifier">DomainT
</span></code>
824 <code class=
"computeroutput"><span class=
"identifier">Compare
</span> <span class=
"special">=
</span>
825 <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">less
</span></code>
830 <code class=
"computeroutput"><span class=
"identifier">IntervalT
</span> <span class=
"special">=
</span>
831 <span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">DomainT
</span><span class=
"special">,
</span><span class=
"identifier">Compare
</span><span class=
"special">>::
</span><span class=
"identifier">type
</span></code>
836 <code class=
"computeroutput"><span class=
"identifier">Alloc
</span> <span class=
"special">=
</span>
837 <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">alloc
</span></code>
844 <br class=
"table-break">
846 <div class=
"section boost_icl_interface_class_templates_maps" lang=
"en">
847 <div class=
"titlepage"><div><div><h4 class=
"title">
848 <a name=
"boost_icl.interface.class_templates.maps"></a><a class=
"link" href=
"interface.html#boost_icl.interface.class_templates.maps" title=
"Maps">Maps
</a>
849 </h4></div></div></div>
851 The next two tables give an overview over
<span class=
"emphasis"><em><span class=
"bold"><strong>map
852 class templates
</strong></span></em></span> of the icl.
855 <a name=
"id1105150"></a><p class=
"title"><b>Table
 1.10.
 map class templates
</b></p>
856 <div class=
"table-contents"><table class=
"table" summary=
"map class templates">
883 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/interval_base_map.html" title=
"Class template interval_base_map">interval_maps
</a></code>
888 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/interval_map.html" title=
"Class template interval_map">interval_map
</a></code>
893 <code class=
"computeroutput"><span class=
"special"><</span><span class=
"identifier">DomainT
</span><span class=
"special">,
</span><span class=
"identifier">CodomainT
</span><span class=
"special">,
</span><span class=
"identifier">Traits
</span><span class=
"special">,
</span><span class=
"identifier">Compare
</span><span class=
"special">,
</span><span class=
"identifier">Combine
</span><span class=
"special">,
</span><span class=
"identifier">Section
</span><span class=
"special">,
</span><span class=
"identifier">IntervalT
</span><span class=
"special">,
</span><span class=
"identifier">Alloc
</span><span class=
"special">></span></code>
904 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/split_interval_map.html" title=
"Class template split_interval_map">split_interval_map
</a></code>
909 <code class=
"computeroutput"><span class=
"special"><</span><span class=
"identifier">DomainT
</span><span class=
"special">,
</span><span class=
"identifier">CodomainT
</span><span class=
"special">,
</span><span class=
"identifier">Traits
</span><span class=
"special">,
</span><span class=
"identifier">Compare
</span><span class=
"special">,
</span><span class=
"identifier">Combine
</span><span class=
"special">,
</span><span class=
"identifier">Section
</span><span class=
"special">,
</span><span class=
"identifier">IntervalT
</span><span class=
"special">,
</span><span class=
"identifier">Alloc
</span><span class=
"special">></span></code>
916 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/map.html" title=
"Class template map">icl::map
</a></code>
921 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/map.html" title=
"Class template map">icl::map
</a></code>
926 <code class=
"computeroutput"><span class=
"special"><</span><span class=
"identifier">DomainT
</span><span class=
"special">,
</span><span class=
"identifier">CodomainT
</span><span class=
"special">,
</span><span class=
"identifier">Traits
</span><span class=
"special">,
</span><span class=
"identifier">Compare
</span><span class=
"special">,
</span><span class=
"identifier">Combine
</span><span class=
"special">,
</span><span class=
"identifier">Section
</span><span class=
"special">,
</span><span class=
"identifier">Alloc
</span><span class=
"special">></span></code>
933 <br class=
"table-break"><p>
934 Templates and template parameters, given in the preceding table are described
935 in detail below.
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/interval_base_map.html" title=
"Class template interval_base_map">Interval_maps
</a></code>
936 represent two class templates
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/interval_map.html" title=
"Class template interval_map">interval_map
</a></code>
937 and
<code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/split_interval_map.html" title=
"Class template split_interval_map">split_interval_map
</a></code>
938 that all have equal template parameters.
941 <a name=
"id1105511"></a><p class=
"title"><b>Table
 1.11.
 Parameters of map class templates
</b></p>
942 <div class=
"table-contents"><table class=
"table" summary=
"Parameters of map class templates">
980 aggregation propagation
985 intersection propagation
1008 <code class=
"computeroutput"><span class=
"keyword">class
</span></code>
1013 <code class=
"computeroutput"><span class=
"keyword">class
</span></code>
1018 <code class=
"computeroutput"><span class=
"keyword">class
</span></code>
1023 <code class=
"computeroutput"><span class=
"keyword">template
</span> <span class=
"special"><</span><span class=
"keyword">class
</span><span class=
"special">></span><span class=
"keyword">class
</span></code>
1028 <code class=
"computeroutput"><span class=
"keyword">template
</span> <span class=
"special"><</span><span class=
"keyword">class
</span><span class=
"special">></span><span class=
"keyword">class
</span></code>
1033 <code class=
"computeroutput"><span class=
"keyword">template
</span> <span class=
"special"><</span><span class=
"keyword">class
</span><span class=
"special">></span><span class=
"keyword">class
</span></code>
1038 <code class=
"computeroutput"><span class=
"keyword">class
</span></code>
1043 <code class=
"computeroutput"><span class=
"keyword">template
</span> <span class=
"special"><</span><span class=
"keyword">class
</span><span class=
"special">></span><span class=
"keyword">class
</span></code>
1050 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/interval_base_map.html" title=
"Class template interval_base_map">interval_maps
</a></code>
1055 <code class=
"computeroutput"><span class=
"identifier">DomainT
</span></code>
1060 <code class=
"computeroutput"><span class=
"identifier">CodomainT
</span></code>
1065 <code class=
"computeroutput"><span class=
"identifier">Traits
</span> <span class=
"special">=
</span>
1066 <span class=
"identifier">identity_absorber
</span></code>
1071 <code class=
"computeroutput"><span class=
"identifier">Compare
</span> <span class=
"special">=
</span>
1072 <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">less
</span></code>
1077 <code class=
"computeroutput"><span class=
"identifier">Combine
</span> <span class=
"special">=
</span>
1078 <span class=
"identifier">inplace_plus
</span></code>
1083 <code class=
"computeroutput"><span class=
"identifier">Section
</span> <span class=
"special">=
</span>
1084 <span class=
"identifier">icl
</span><span class=
"special">::
</span><span class=
"identifier">inplace_et
</span></code>
1089 <code class=
"computeroutput"><span class=
"identifier">IntervalT
</span> <span class=
"special">=
</span>
1090 <span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">DomainT
</span><span class=
"special">,
</span><span class=
"identifier">Compare
</span><span class=
"special">>::
</span><span class=
"identifier">type
</span></code>
1095 <code class=
"computeroutput"><span class=
"identifier">Alloc
</span> <span class=
"special">=
</span>
1096 <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">alloc
</span></code>
1103 <code class=
"computeroutput"><a class=
"link" href=
"../boost/icl/map.html" title=
"Class template map">icl::map
</a></code>
1108 <code class=
"computeroutput"><span class=
"identifier">DomainT
</span></code>
1113 <code class=
"computeroutput"><span class=
"identifier">CodomainT
</span></code>
1118 <code class=
"computeroutput"><span class=
"identifier">Traits
</span> <span class=
"special">=
</span>
1119 <span class=
"identifier">identity_absorber
</span></code>
1124 <code class=
"computeroutput"><span class=
"identifier">Compare
</span> <span class=
"special">=
</span>
1125 <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">less
</span></code>
1130 <code class=
"computeroutput"><span class=
"identifier">Combine
</span> <span class=
"special">=
</span>
1131 <span class=
"identifier">inplace_plus
</span></code>
1136 <code class=
"computeroutput"><span class=
"identifier">Section
</span> <span class=
"special">=
</span>
1137 <span class=
"identifier">icl
</span><span class=
"special">::
</span><span class=
"identifier">inplace_et
</span></code>
1142 <code class=
"computeroutput"><span class=
"identifier">Alloc
</span> <span class=
"special">=
</span>
1143 <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">alloc
</span></code>
1146 <td class=
"auto-generated"> </td>
1151 <br class=
"table-break"><p>
1152 Using the following placeholders,
1157 <pre class=
"programlisting"><span class=
"identifier">D
</span> <span class=
"special">:=
</span> <span class=
"keyword">class
</span> <span class=
"identifier">DomainT
</span><span class=
"special">,
</span>
1158 <span class=
"identifier">C
</span> <span class=
"special">:=
</span> <span class=
"keyword">class
</span> <span class=
"identifier">CodomainT
</span><span class=
"special">,
</span>
1159 <span class=
"identifier">T
</span> <span class=
"special">:=
</span> <span class=
"keyword">class
</span> <span class=
"identifier">Traits
</span><span class=
"special">,
</span>
1160 <span class=
"identifier">cp
</span> <span class=
"special">:=
</span> <span class=
"keyword">template
</span><span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">D
</span><span class=
"special">></span><span class=
"keyword">class
</span> <span class=
"identifier">Compare
</span> <span class=
"special">=
</span> <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">less
</span><span class=
"special">,
</span>
1161 <span class=
"identifier">cb
</span> <span class=
"special">:=
</span> <span class=
"keyword">template
</span><span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">C
</span><span class=
"special">></span><span class=
"keyword">class
</span> <span class=
"identifier">Combine
</span> <span class=
"special">=
</span> <span class=
"identifier">icl
</span><span class=
"special">::
</span><span class=
"identifier">inplace_plus
</span><span class=
"special">,
</span>
1162 <span class=
"identifier">s
</span> <span class=
"special">:=
</span> <span class=
"keyword">template
</span><span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">C
</span><span class=
"special">></span><span class=
"keyword">class
</span> <span class=
"identifier">Section
</span> <span class=
"special">=
</span> <span class=
"identifier">icl
</span><span class=
"special">::
</span><span class=
"identifier">inplace_et
</span><span class=
"special">,
</span>
1163 <span class=
"identifier">I
</span> <span class=
"special">:=
</span> <span class=
"keyword">class
</span> <span class=
"identifier">IntervalT
</span> <span class=
"special">=
</span> <span class=
"identifier">icl
</span><span class=
"special">::
</span><span class=
"identifier">interval
</span><span class=
"special"><</span><span class=
"identifier">D
</span><span class=
"special">,
</span><span class=
"identifier">cp
</span><span class=
"special">>::
</span><span class=
"identifier">type
</span>
1164 <span class=
"identifier">a
</span> <span class=
"special">:=
</span> <span class=
"keyword">template
</span><span class=
"special"><</span><span class=
"keyword">class
</span><span class=
"special">></span><span class=
"keyword">class
</span> <span class=
"identifier">Alloc
</span> <span class=
"special">=
</span> <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">allocator
</span>
1169 we arrive at a final synoptical matrix of class templates and their parameters.
1171 <pre class=
"programlisting">interval
<D, cp,
>
1172 interval_sets
<D, cp, I, a
>
1173 interval_maps
<D, C, T, cp, cb, s, I, a
>
1174 icl::map
<D, C, T, cp, cb, s, a
>
1177 The choice of parameters and their positions follow the std::containers
1178 as close a possible, so that usage of interval sets and maps does only
1179 require minimal additional knowledge.
1182 Additional knowledge is required when instantiating a comparison parameter
1183 <code class=
"computeroutput"><span class=
"identifier">Compare
</span></code> or an allocation
1184 parameter
<code class=
"computeroutput"><span class=
"identifier">Alloc
</span></code>. In contrast
1185 to std::containers these have to be instantiated as templates, like e.g.
1188 <pre class=
"programlisting"><span class=
"identifier">interval_set
</span><span class=
"special"><</span><span class=
"identifier">string
</span><span class=
"special">,
</span> <span class=
"identifier">german_compare
</span><span class=
"special">></span> <span class=
"identifier">sections
</span><span class=
"special">;
</span> <span class=
"comment">//
2nd parameter is a template
1189 </span><span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">set
</span><span class=
"special"><</span><span class=
"identifier">string
</span><span class=
"special">,
</span> <span class=
"identifier">german_compare
</span><span class=
"special"><</span><span class=
"identifier">string
</span><span class=
"special">></span> <span class=
"special">></span> <span class=
"identifier">words
</span><span class=
"special">;
</span> <span class=
"comment">//
2nd parameter is a type
1196 <table xmlns:
rev=
"http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width=
"100%"><tr>
1197 <td align=
"left"></td>
1198 <td align=
"right"><div class=
"copyright-footer">Copyright
© 2007 -
2010 Joachim Faulhaber
<br>Copyright
© 1999 -
2006 Cortex Software GmbH
<p>
1199 Distributed under the Boost Software License, Version
1.0. (See accompanying
1200 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>)
1205 <div class=
"spirit-nav">
1206 <a accesskey=
"p" href=
"semantics/concept_induction.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=
"interface/required_concepts.html"><img src=
"../../../../../doc/src/images/next.png" alt=
"Next"></a>