• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>set</title>
5<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../../index.html" title="Chapter 1. Fusion 2.2">
8<link rel="up" href="../container.html" title="Container">
9<link rel="prev" href="back_extended_deque.html" title="back_extended_deque">
10<link rel="next" href="map.html" title="map">
11</head>
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="../../../../../../libs/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>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="back_extended_deque.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../container.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="map.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h3 class="title">
27<a name="fusion.container.set"></a><a class="link" href="set.html" title="set">set</a>
28</h3></div></div></div>
29<h5>
30<a name="fusion.container.set.h0"></a>
31        <span class="phrase"><a name="fusion.container.set.description"></a></span><a class="link" href="set.html#fusion.container.set.description">Description</a>
32      </h5>
33<p>
34        set is an <a class="link" href="../sequence/concepts/associative_sequence.html" title="Associative Sequence">Associative
35        Sequence</a> of heterogeneous typed data elements. Type identity is used
36        to impose an equivalence relation on keys. The element's type is its key.
37        A set may contain at most one element for each key. Membership testing and
38        element key lookup has constant runtime complexity (see <a class="link" href="../notes.html#fusion.notes.overloaded_functions">Overloaded
39        Functions</a>).
40      </p>
41<h5>
42<a name="fusion.container.set.h1"></a>
43        <span class="phrase"><a name="fusion.container.set.header"></a></span><a class="link" href="set.html#fusion.container.set.header">Header</a>
44      </h5>
45<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">container</span><span class="special">/</span><span class="identifier">set</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
46<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">set</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
47<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">container</span><span class="special">/</span><span class="identifier">set</span><span class="special">/</span><span class="identifier">set_fwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
48<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">set_fwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
49</pre>
50<h5>
51<a name="fusion.container.set.h2"></a>
52        <span class="phrase"><a name="fusion.container.set.synopsis"></a></span><a class="link" href="set.html#fusion.container.set.synopsis">Synopsis</a>
53      </h5>
54<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span>
55    <span class="keyword">typename</span> <span class="identifier">T0</span> <span class="special">=</span> <span class="emphasis"><em>unspecified</em></span>
56  <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span> <span class="special">=</span> <span class="emphasis"><em>unspecified</em></span>
57  <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span> <span class="special">=</span> <span class="emphasis"><em>unspecified</em></span>
58    <span class="special">...</span>
59  <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">TN</span> <span class="special">=</span> <span class="emphasis"><em>unspecified</em></span>
60<span class="special">&gt;</span>
61<span class="keyword">struct</span> <span class="identifier">set</span><span class="special">;</span>
62</pre>
63<p>
64        For C++11 compilers, the variadic function interface has no upper bound.
65      </p>
66<p>
67        For C++03 compilers, the variadic class interface accepts <code class="computeroutput"><span class="number">0</span></code>
68        to <code class="computeroutput"><span class="identifier">FUSION_MAX_SET_SIZE</span></code> elements,
69        where <code class="computeroutput"><span class="identifier">FUSION_MAX_SET_SIZE</span></code>
70        is a user definable predefined maximum that defaults to <code class="computeroutput"><span class="number">10</span></code>.
71        Example:
72      </p>
73<pre class="programlisting"><span class="identifier">set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">,</span> <span class="keyword">double</span><span class="special">&gt;</span>
74</pre>
75<p>
76        You may define the preprocessor constant <code class="computeroutput"><span class="identifier">FUSION_MAX_SET_SIZE</span></code>
77        before including any Fusion header to change the default. Example:
78      </p>
79<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_SET_SIZE</span> <span class="number">20</span>
80</pre>
81<h5>
82<a name="fusion.container.set.h3"></a>
83        <span class="phrase"><a name="fusion.container.set.template_parameters"></a></span><a class="link" href="set.html#fusion.container.set.template_parameters">Template
84        parameters</a>
85      </h5>
86<div class="informaltable"><table class="table">
87<colgroup>
88<col>
89<col>
90<col>
91</colgroup>
92<thead><tr>
93<th>
94                <p>
95                  Parameter
96                </p>
97              </th>
98<th>
99                <p>
100                  Description
101                </p>
102              </th>
103<th>
104                <p>
105                  Default
106                </p>
107              </th>
108</tr></thead>
109<tbody><tr>
110<td>
111                <p>
112                  <code class="computeroutput"><span class="identifier">T0</span></code>...<code class="computeroutput"><span class="identifier">TN</span></code>
113                </p>
114              </td>
115<td>
116                <p>
117                  Element types
118                </p>
119              </td>
120<td>
121                <p>
122                  <span class="emphasis"><em>unspecified</em></span>
123                </p>
124              </td>
125</tr></tbody>
126</table></div>
127<h5>
128<a name="fusion.container.set.h4"></a>
129        <span class="phrase"><a name="fusion.container.set.model_of"></a></span><a class="link" href="set.html#fusion.container.set.model_of">Model
130        of</a>
131      </h5>
132<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
133<li class="listitem">
134            <a class="link" href="../sequence/concepts/associative_sequence.html" title="Associative Sequence">Associative
135            Sequence</a>
136          </li>
137<li class="listitem">
138            <a class="link" href="../sequence/concepts/forward_sequence.html" title="Forward Sequence">Forward Sequence</a>
139          </li>
140</ul></div>
141<div class="variablelist">
142<p class="title"><b>Notation</b></p>
143<dl class="variablelist">
144<dt><span class="term"><code class="computeroutput"><span class="identifier">S</span></code></span></dt>
145<dd><p>
146              A <code class="computeroutput"><span class="identifier">set</span></code> type
147            </p></dd>
148<dt><span class="term"><code class="computeroutput"><span class="identifier">s</span></code></span></dt>
149<dd><p>
150              An instance of <code class="computeroutput"><span class="identifier">set</span></code>
151            </p></dd>
152<dt><span class="term"><code class="computeroutput"><span class="identifier">e0</span></code>...<code class="computeroutput"><span class="identifier">en</span></code></span></dt>
153<dd><p>
154              Heterogeneous values
155            </p></dd>
156<dt><span class="term"><code class="computeroutput"><span class="identifier">fs</span></code></span></dt>
157<dd><p>
158              A <a class="link" href="../sequence/concepts/forward_sequence.html" title="Forward Sequence">Forward
159              Sequence</a>
160            </p></dd>
161</dl>
162</div>
163<h5>
164<a name="fusion.container.set.h5"></a>
165        <span class="phrase"><a name="fusion.container.set.expression_semantics"></a></span><a class="link" href="set.html#fusion.container.set.expression_semantics">Expression
166        Semantics</a>
167      </h5>
168<p>
169        Semantics of an expression is defined only where it differs from, or is not
170        defined in <a class="link" href="../sequence/concepts/random_access_sequence.html" title="Random Access Sequence">Random
171        Access Sequence</a> and <a class="link" href="../sequence/concepts/associative_sequence.html" title="Associative Sequence">Associative
172        Sequence</a>.
173      </p>
174<div class="informaltable"><table class="table">
175<colgroup>
176<col>
177<col>
178</colgroup>
179<thead><tr>
180<th>
181                <p>
182                  Expression
183                </p>
184              </th>
185<th>
186                <p>
187                  Semantics
188                </p>
189              </th>
190</tr></thead>
191<tbody>
192<tr>
193<td>
194                <p>
195                  <code class="computeroutput"><span class="identifier">S</span><span class="special">()</span></code>
196                </p>
197              </td>
198<td>
199                <p>
200                  Creates a set with default constructed elements.
201                </p>
202              </td>
203</tr>
204<tr>
205<td>
206                <p>
207                  <code class="computeroutput"><span class="identifier">S</span><span class="special">(</span><span class="identifier">e0</span><span class="special">,</span>
208                  <span class="identifier">e1</span><span class="special">,...</span>
209                  <span class="identifier">en</span><span class="special">)</span></code>
210                </p>
211              </td>
212<td>
213                <p>
214                  Creates a set with elements <code class="computeroutput"><span class="identifier">e0</span></code>...<code class="computeroutput"><span class="identifier">en</span></code>.
215                </p>
216              </td>
217</tr>
218<tr>
219<td>
220                <p>
221                  <code class="computeroutput"><span class="identifier">S</span><span class="special">(</span><span class="identifier">fs</span><span class="special">)</span></code>
222                </p>
223              </td>
224<td>
225                <p>
226                  Copy constructs a set from a <a class="link" href="../sequence/concepts/forward_sequence.html" title="Forward Sequence">Forward
227                  Sequence</a> <code class="computeroutput"><span class="identifier">fs</span></code>.
228                </p>
229              </td>
230</tr>
231<tr>
232<td>
233                <p>
234                  <code class="computeroutput"><span class="identifier">s</span> <span class="special">=</span>
235                  <span class="identifier">fs</span></code>
236                </p>
237              </td>
238<td>
239                <p>
240                  Assigns to a set, <code class="computeroutput"><span class="identifier">s</span></code>,
241                  from a <a class="link" href="../sequence/concepts/forward_sequence.html" title="Forward Sequence">Forward
242                  Sequence</a> <code class="computeroutput"><span class="identifier">fs</span></code>.
243                </p>
244              </td>
245</tr>
246</tbody>
247</table></div>
248<h5>
249<a name="fusion.container.set.h6"></a>
250        <span class="phrase"><a name="fusion.container.set.example"></a></span><a class="link" href="set.html#fusion.container.set.example">Example</a>
251      </h5>
252<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">set</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">float</span><span class="special">&gt;</span> <span class="identifier">S</span><span class="special">;</span>
253<span class="identifier">S</span> <span class="identifier">s</span><span class="special">(</span><span class="number">12</span><span class="special">,</span> <span class="number">5.5f</span><span class="special">);</span>
254<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <a class="link" href="../sequence/intrinsic/functions/at_key.html" title="at_key"><code class="computeroutput"><span class="identifier">at_key</span></code></a><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">s</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
255<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <a class="link" href="../sequence/intrinsic/functions/at_key.html" title="at_key"><code class="computeroutput"><span class="identifier">at_key</span></code></a><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;(</span><span class="identifier">s</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
256<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <a class="link" href="../sequence/intrinsic/metafunctions/has_key.html" title="has_key"><code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span></code></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">,</span> <span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">value</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
257</pre>
258</div>
259<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
260<td align="left"></td>
261<td align="right"><div class="copyright-footer">Copyright © 2001-2006, 2011, 2012 Joel de Guzman,
262      Dan Marsden, Tobias Schwinger<p>
263        Distributed under the Boost Software License, Version 1.0. (See accompanying
264        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>)
265      </p>
266</div></td>
267</tr></table>
268<hr>
269<div class="spirit-nav">
270<a accesskey="p" href="back_extended_deque.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../container.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="map.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
271</div>
272</body>
273</html>
274