3 <meta content=
"text/html; charset=windows-1252" http-equiv=
"content-type">
4 <title>arrays.html
</title>
5 <link rel=
"stylesheet" type=
"text/css" href=
"../styles.css">
9 <div> An
<i>array
</i> is a data structure consisting of a two-element
<i>tuple
</i>.
10 The first element is the number of elements in the
<i>array
</i>.
11 The second element is another
<i>tuple
</i> of the elements in the
<i>array
</i>.
13 <div class=
"code"> (
<i>3</i>, (
<i>a
</i>,
<i>b
</i>,
<i>c
</i>))
</div>
14 <div> ...is an
<i>array
</i> of
<i>3</i> elements--
<i>a
</i>,
<i>b
</i>, and
16 <div> The primary strength of
<i>arrays
</i> is that they store their own
17 size.
Because of this, access to elements does not require the
18 size.
It only requires that an element exists at a certain index.
</div>
19 <div> This allows macro parameters to be variable in size and allows data
20 states to change size without the user explicitly keeping track of the
21 size independently.
<br>
23 An
<i>array
</i>can be empty and have no elements. An empty array has a
24 0 size. The notation for an empty array is '(
0,())'.
<br>
26 <span style=
"font-style: italic;"> </span></div>
27 <div>With variadic macro support a
<i>tuple
</i>has all of the
28 functionality as an
<i>array
</i>, knows its own size, and is easier
29 syntactically to use. Because of that an
<i>array
</i> should be used, as
30 opposed to a
<i>tuple
</i>, only if your compiler does not support
31 variadic macros. The only advantage an
<i>array
</i>has over a
<i>tuple
32 </i>is that an
<i>array
</i>can be empty while a
<i>tuple
</i>always
33 has at least one element and therefore can never have a size of
0.
<br>
35 Elements of an
<i>array
</i> can be extracted with
<b>BOOST_PP_ARRAY_ELEM
</b>,
36 an
<i>array's
</i> size can be extracted with
<b>BOOST_PP_ARRAY_SIZE
</b>,
37 and an
<i>array
</i> can be converted to the more primitive
<i>tuple
</i>
38 data structure with
<b>BOOST_PP_ARRAY_DATA
</b>.
</div>
41 <li><a href=
"../ref/array_data.html">BOOST_PP_ARRAY_DATA
</a></li>
42 <li><a href=
"../ref/array_elem.html">BOOST_PP_ARRAY_ELEM
</a></li>
43 <li><a href=
"../ref/array_size.html">BOOST_PP_ARRAY_SIZE
</a></li>
46 <div style=
"margin-left: 0px;"> <i>© Copyright
<a href=
"http://www.housemarque.com"
47 target=
"_top">Housemarque Oy
</a> 2002</i> <br>
48 <i>© Copyright Paul Mensonides
2002</i> </div>
49 <div style=
"margin-left: 0px;">
50 <p><small>Distributed under the Boost Software License, Version
1.0. (See
51 accompanying file
<a href=
"../../../../LICENSE_1_0.txt">LICENSE_1_0.txt
</a>
52 or copy at
<a href=
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt
</a>)
</small></p>