2007-11-06 12:13:52 +00:00
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=ISO-8859-1" >
< title > Associative
Sequence< / title >
2007-11-07 03:46:23 +00:00
< link rel = "stylesheet" href = "../../../../../../../doc/html/boostbook.css" type = "text/css" >
2009-02-22 06:27:12 +00:00
< meta name = "generator" content = "DocBook XSL Stylesheets V1.68.1" >
2007-11-06 12:13:52 +00:00
< link rel = "start" href = "../../../index.html" title = "Chapter<65> 1.<2E> Fusion 2.0" >
< link rel = "up" href = "../concepts.html" title = "Concepts" >
< link rel = "prev" href = "random_access_sequence.html" title = "Random
Access Sequence">
< link rel = "next" href = "../intrinsic.html" title = "Intrinsic" >
< / 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 >
2008-07-17 23:59:22 +00:00
< td align = "center" > < a href = "../../../../../../../index.html" > Home< / a > < / td >
2007-11-06 12:13:52 +00:00
< td align = "center" > < a href = "../../../../../../libraries.htm" > Libraries< / a > < / td >
2008-07-17 23:59:22 +00:00
< 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 >
2007-11-06 12:13:52 +00:00
< td align = "center" > < a href = "../../../../../../../more/index.htm" > More< / a > < / td >
< / tr > < / table >
< hr >
< div class = "spirit-nav" >
< a accesskey = "p" href = "random_access_sequence.html" > < img src = "../../../../../../../doc/html/images/prev.png" alt = "Prev" > < / a > < a accesskey = "u" href = "../concepts.html" > < img src = "../../../../../../../doc/html/images/up.png" alt = "Up" > < / a > < a accesskey = "h" href = "../../../index.html" > < img src = "../../../../../../../doc/html/images/home.png" alt = "Home" > < / a > < a accesskey = "n" href = "../intrinsic.html" > < img src = "../../../../../../../doc/html/images/next.png" alt = "Next" > < / a >
< / div >
< div class = "section" lang = "en" >
< div class = "titlepage" > < div > < div > < h4 class = "title" >
< a name = "fusion.sequence.concepts.associative_sequence" > < / a > < a href = "associative_sequence.html" title = "Associative
Sequence">Associative
Sequence< / a > < / h4 > < / div > < / div > < / div >
< a name = "fusion.sequence.concepts.associative_sequence.description" > < / a > < h5 >
2009-02-22 06:27:12 +00:00
< a name = "id1005240" > < / a >
2007-11-06 12:13:52 +00:00
< a href = "associative_sequence.html#fusion.sequence.concepts.associative_sequence.description" > Description< / a >
< / h5 >
< p >
An Associative Sequence allows efficient retrieval of elements based on
keys. Like associative sequences in < a href = "http://www.boost.org/libs/mpl/index.html" target = "_top" > MPL< / a > ,
and unlike associative containers in < a href = "http://en.wikipedia.org/wiki/Standard_Template_Library" target = "_top" > STL< / a > ,
Fusion associative sequences have no implied ordering relation. Instead,
type identity is used to impose an equivalence relation on keys, and the
order in which sequence elements are traversed during iteration is left
unspecified. In addition, unlike < a href = "http://en.wikipedia.org/wiki/Standard_Template_Library" target = "_top" > STL< / a > ,
Associative Sequences have mutable iterators. This is due to the fact that
there is no associated ordering relation and the runtime value of the keys
themselves do not have any effect on the associativity of the sequence.
< / p >
< div class = "variablelist" >
< p class = "title" > < b > Notation< / b > < / p >
< dl >
2009-02-22 06:27:12 +00:00
< dt > < span class = "term" > < code class = "computeroutput" > < span class = "identifier" > s< / span > < / code > < / span > < / dt >
2007-11-06 12:13:52 +00:00
< dd > < p >
An Associative Sequence
< / p > < / dd >
2009-02-22 06:27:12 +00:00
< dt > < span class = "term" > < code class = "computeroutput" > < span class = "identifier" > S< / span > < / code > < / span > < / dt >
2007-11-06 12:13:52 +00:00
< dd > < p >
An Associative Sequence type
< / p > < / dd >
2009-02-22 06:27:12 +00:00
< dt > < span class = "term" > < code class = "computeroutput" > < span class = "identifier" > K< / span > < / code > < / span > < / dt >
2007-11-06 12:13:52 +00:00
< dd > < p >
An arbitrary < span class = "emphasis" > < em > key< / em > < / span > type
< / p > < / dd >
2009-02-22 06:27:12 +00:00
< dt > < span class = "term" > < code class = "computeroutput" > < span class = "identifier" > o< / span > < / code > < / span > < / dt >
2007-11-06 12:13:52 +00:00
< dd > < p >
An arbitrary object
< / p > < / dd >
2009-02-22 06:27:12 +00:00
< dt > < span class = "term" > < code class = "computeroutput" > < span class = "identifier" > e< / span > < / code > < / span > < / dt >
2007-11-06 12:13:52 +00:00
< dd > < p >
A Sequence element
< / p > < / dd >
< / dl >
< / div >
< a name = "fusion.sequence.concepts.associative_sequence.valid_expressions" > < / a > < h5 >
2009-02-22 06:27:12 +00:00
< a name = "id1005405" > < / a >
2007-11-06 12:13:52 +00:00
< a href = "associative_sequence.html#fusion.sequence.concepts.associative_sequence.valid_expressions" > Valid
Expressions< / a >
< / h5 >
< p >
For any Associative Sequence the following expressions must be valid:
< / p >
< div class = "informaltable" > < table class = "table" >
< colgroup >
< col >
< col >
< col >
< col >
< / colgroup >
< thead > < tr >
< th >
< p >
Expression
< / p >
< / th >
< th >
< p >
Return type
< / p >
< / th >
< th >
< p >
Type Requirements
< / p >
< / th >
< th >
< p >
Runtime Complexity
< / p >
< / th >
< / tr > < / thead >
< tbody >
< tr >
< td >
< p >
2009-02-22 06:27:12 +00:00
< code class = "computeroutput" > < a href = "../intrinsic/functions/has_key.html" title = "has_key" > < code class = "computeroutput" > < span class = "identifier" > has_key< / span > < / code > < / a > < span class = "special" > < < / span > < span class = "identifier" > K< / span > < span class = "special" > > (< / span > < span class = "identifier" > s< / span > < span class = "special" > )< / span > < / code >
2007-11-06 12:13:52 +00:00
< / p >
< / td >
< td >
< p >
< a href = "http://www.boost.org/libs/mpl/doc/refmanual/integral-constant.html" target = "_top" > MPL
Boolean Constant< / a > . Convertible to bool.
< / p >
< / td >
< td >
< p >
< / p >
< / td >
< td >
< p >
Constant
< / p >
< / td >
< / tr >
< tr >
< td >
< p >
2009-02-22 06:27:12 +00:00
< code class = "computeroutput" > < a href = "../intrinsic/functions/at_key.html" title = "at_key" > < code class = "computeroutput" > < span class = "identifier" > at_key< / span > < / code > < / a > < span class = "special" > < < / span > < span class = "identifier" > K< / span > < span class = "special" > > (< / span > < span class = "identifier" > s< / span > < span class = "special" > )< / span > < / code >
2007-11-06 12:13:52 +00:00
< / p >
< / td >
< td >
< p >
Any type
< / p >
< / td >
< td >
< p >
< / p >
< / td >
< td >
< p >
Constant
< / p >
< / td >
< / tr >
< tr >
< td >
< p >
2009-02-22 06:27:12 +00:00
< code class = "computeroutput" > < a href = "../intrinsic/functions/at_key.html" title = "at_key" > < code class = "computeroutput" > < span class = "identifier" > at_key< / span > < / code > < / a > < span class = "special" > < < / span > < span class = "identifier" > K< / span > < span class = "special" > > (< / span > < span class = "identifier" > s< / span > < span class = "special" > )< / span >
< span class = "special" > =< / span > < span class = "identifier" > o< / span > < / code >
2007-11-06 12:13:52 +00:00
< / p >
< / td >
< td >
< p >
Any type
< / p >
< / td >
< td >
< p >
2009-02-22 06:27:12 +00:00
< code class = "computeroutput" > < span class = "identifier" > s< / span > < / code > is mutable and
< code class = "computeroutput" > < span class = "identifier" > e< / span > < span class = "special" > =< / span >
< span class = "identifier" > o< / span > < / code > , where < code class = "computeroutput" > < span class = "identifier" > e< / span > < / code > is the first element in the
2007-11-06 12:13:52 +00:00
sequence, is a valid expression.
< / p >
< / td >
< td >
< p >
Constant
< / p >
< / td >
< / tr >
< / tbody >
< / table > < / div >
< a name = "fusion.sequence.concepts.associative_sequence.result_type_expressions" > < / a > < h5 >
2009-02-22 06:27:12 +00:00
< a name = "id1005747" > < / a >
2007-11-06 12:13:52 +00:00
< a href = "associative_sequence.html#fusion.sequence.concepts.associative_sequence.result_type_expressions" > Result
Type Expressions< / a >
< / h5 >
< div class = "informaltable" > < table class = "table" >
< colgroup >
< col >
< col >
< / colgroup >
< thead > < tr >
< th >
< p >
Expression
< / p >
< / th >
< th >
< p >
Compile Time Complexity
< / p >
< / th >
< / tr > < / thead >
< tbody >
< tr >
< td >
< p >
2009-02-22 06:27:12 +00:00
< code class = "computeroutput" > < a href = "../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" > < < / span > < span class = "identifier" > S< / span > < span class = "special" > ,< / span >
< span class = "identifier" > K< / span > < span class = "special" > > ::< / span > < span class = "identifier" > type< / span > < / code >
2007-11-06 12:13:52 +00:00
< / p >
< / td >
< td >
< p >
Amortized constant time
< / p >
< / td >
< / tr >
< tr >
< td >
< p >
2009-02-22 06:27:12 +00:00
< code class = "computeroutput" > < a href = "../intrinsic/metafunctions/at_key.html" title = "at_key" > < code class = "computeroutput" > < span class = "identifier" > result_of< / span > < span class = "special" > ::< / span > < span class = "identifier" > at_key< / span > < / code > < / a > < span class = "special" > < < / span > < span class = "identifier" > S< / span > < span class = "special" > ,< / span >
< span class = "identifier" > K< / span > < span class = "special" > > ::< / span > < span class = "identifier" > type< / span > < / code >
2007-11-06 12:13:52 +00:00
< / p >
< / td >
< td >
< p >
Amortized constant time
< / p >
< / td >
< / tr >
< tr >
< td >
< p >
2009-02-22 06:27:12 +00:00
< code class = "computeroutput" > < a href = "../intrinsic/metafunctions/value_at_key.html" title = "value_at_key" > < code class = "computeroutput" > < span class = "identifier" > result_of< / span > < span class = "special" > ::< / span > < span class = "identifier" > value_at_key< / span > < / code > < / a > < span class = "special" > < < / span > < span class = "identifier" > S< / span > < span class = "special" > ,< / span >
< span class = "identifier" > K< / span > < span class = "special" > > ::< / span > < span class = "identifier" > type< / span > < / code >
2007-11-06 12:13:52 +00:00
< / p >
< / td >
< td >
< p >
Amortized constant time
< / p >
< / td >
< / tr >
< / tbody >
< / table > < / div >
< div class = "sidebar" > < p >
2009-02-22 06:27:12 +00:00
< span class = "inlinemediaobject" > < img src = "../../../images/note.png" alt = "note" > < / span > < code class = "computeroutput" > < a href = "../intrinsic/metafunctions/at_key.html" title = "at_key" > < code class = "computeroutput" > < span class = "identifier" > result_of< / span > < span class = "special" > ::< / span > < span class = "identifier" > at_key< / span > < / code > < / a > < span class = "special" > < < / span > < span class = "identifier" > S< / span > < span class = "special" > ,< / span > < span class = "identifier" > K< / span > < span class = "special" > > < / span > < / code > returns the actual type returned by
< code class = "computeroutput" > < a href = "../intrinsic/functions/at_key.html" title = "at_key" > < code class = "computeroutput" > < span class = "identifier" > at_key< / span > < / code > < / a > < span class = "special" > < < / span > < span class = "identifier" > K< / span > < span class = "special" > > (< / span > < span class = "identifier" > s< / span > < span class = "special" > )< / span > < / code > . In
2007-11-06 12:13:52 +00:00
most cases, this is a reference. Hence, there is no way to know the exact
2009-02-22 06:27:12 +00:00
element type using < code class = "computeroutput" > < a href = "../intrinsic/metafunctions/at_key.html" title = "at_key" > < code class = "computeroutput" > < span class = "identifier" > result_of< / span > < span class = "special" > ::< / span > < span class = "identifier" > at_key< / span > < / code > < / a > < span class = "special" > < < / span > < span class = "identifier" > S< / span > < span class = "special" > ,< / span > < span class = "identifier" > K< / span > < span class = "special" > > < / span > < / code > .The element at < code class = "computeroutput" > < span class = "identifier" > K< / span > < / code >
2007-11-06 12:13:52 +00:00
may actually be a reference to begin with. For this purpose, you can use
2009-02-22 06:27:12 +00:00
< code class = "computeroutput" > < a href = "../intrinsic/metafunctions/value_at_key.html" title = "value_at_key" > < code class = "computeroutput" > < span class = "identifier" > result_of< / span > < span class = "special" > ::< / span > < span class = "identifier" > value_at_key< / span > < / code > < / a > < span class = "special" > < < / span > < span class = "identifier" > S< / span > < span class = "special" > ,< / span > < span class = "identifier" > N< / span > < span class = "special" > > < / span > < / code > .
2007-11-06 12:13:52 +00:00
< / p > < / div >
< a name = "fusion.sequence.concepts.associative_sequence.expression_semantics" > < / a > < h5 >
2009-02-22 06:27:12 +00:00
< a name = "id1006254" > < / a >
2007-11-06 12:13:52 +00:00
< a href = "associative_sequence.html#fusion.sequence.concepts.associative_sequence.expression_semantics" > Expression
Semantics< / a >
< / h5 >
< div class = "informaltable" > < table class = "table" >
< colgroup >
< col >
< col >
< / colgroup >
< thead > < tr >
< th >
< p >
Expression
< / p >
< / th >
< th >
< p >
Semantics
< / p >
< / th >
< / tr > < / thead >
< tbody >
< tr >
< td >
< p >
2009-02-22 06:27:12 +00:00
< code class = "computeroutput" > < a href = "../intrinsic/functions/has_key.html" title = "has_key" > < code class = "computeroutput" > < span class = "identifier" > has_key< / span > < / code > < / a > < span class = "special" > < < / span > < span class = "identifier" > K< / span > < span class = "special" > > (< / span > < span class = "identifier" > s< / span > < span class = "special" > )< / span > < / code >
2007-11-06 12:13:52 +00:00
< / p >
< / td >
< td >
< p >
2009-02-22 06:27:12 +00:00
A boolean Integral Constant < code class = "computeroutput" > < span class = "identifier" > c< / span > < / code >
such that < code class = "computeroutput" > < span class = "identifier" > c< / span > < span class = "special" > ::< / span > < span class = "identifier" > value< / span > < span class = "special" > ==< / span >
< span class = "keyword" > true< / span > < / code > if and only if there
is one or more elements with the key < code class = "computeroutput" > < span class = "identifier" > k< / span > < / code >
in < code class = "computeroutput" > < span class = "identifier" > s< / span > < / code > ; see < a href = "../intrinsic/functions/has_key.html" title = "has_key" > < code class = "computeroutput" > < span class = "identifier" > has_key< / span > < / code > < / a > .
2007-11-06 12:13:52 +00:00
< / p >
< / td >
< / tr >
< tr >
< td >
< p >
2009-02-22 06:27:12 +00:00
< code class = "computeroutput" > < a href = "../intrinsic/functions/at_key.html" title = "at_key" > < code class = "computeroutput" > < span class = "identifier" > at_key< / span > < / code > < / a > < span class = "special" > < < / span > < span class = "identifier" > K< / span > < span class = "special" > > (< / span > < span class = "identifier" > s< / span > < span class = "special" > )< / span > < / code >
2007-11-06 12:13:52 +00:00
< / p >
< / td >
< td >
< p >
2009-02-22 06:27:12 +00:00
The element associated with the key < code class = "computeroutput" > < span class = "identifier" > K< / span > < / code >
in the sequence < code class = "computeroutput" > < span class = "identifier" > s< / span > < / code > ;
see < a href = "../intrinsic/functions/at.html" title = "at" > < code class = "computeroutput" > < span class = "identifier" > at< / span > < / code > < / a > .
2007-11-06 12:13:52 +00:00
< / p >
< / td >
< / tr >
< / tbody >
< / table > < / div >
< a name = "fusion.sequence.concepts.associative_sequence.models" > < / a > < h5 >
2009-02-22 06:27:12 +00:00
< a name = "id1006537" > < / a >
2007-11-06 12:13:52 +00:00
< a href = "associative_sequence.html#fusion.sequence.concepts.associative_sequence.models" > Models< / a >
< / h5 >
< div class = "itemizedlist" > < ul type = "disc" >
2009-02-22 06:27:12 +00:00
< li > < a href = "../../container/set.html" title = "set" > < code class = "computeroutput" > < span class = "identifier" > set< / span > < / code > < / a > < / li >
< li > < a href = "../../container/map.html" title = "map" > < code class = "computeroutput" > < span class = "identifier" > map< / span > < / code > < / a > < / li >
2007-11-06 12:13:52 +00:00
< / ul > < / div >
< / div >
< table xmlns:rev = "http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width = "100%" > < tr >
< td align = "left" > < / td >
2007-11-14 10:17:09 +00:00
< td align = "right" > < div class = "copyright-footer" > Copyright <20> 2001-2007 Joel de Guzman, Dan Marsden, Tobias
2007-11-07 02:12:28 +00:00
Schwinger< 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 > )
2007-11-14 10:17:09 +00:00
< / p >
< / div > < / td >
2007-11-06 12:13:52 +00:00
< / tr > < / table >
< hr >
< div class = "spirit-nav" >
< a accesskey = "p" href = "random_access_sequence.html" > < img src = "../../../../../../../doc/html/images/prev.png" alt = "Prev" > < / a > < a accesskey = "u" href = "../concepts.html" > < img src = "../../../../../../../doc/html/images/up.png" alt = "Up" > < / a > < a accesskey = "h" href = "../../../index.html" > < img src = "../../../../../../../doc/html/images/home.png" alt = "Home" > < / a > < a accesskey = "n" href = "../intrinsic.html" > < img src = "../../../../../../../doc/html/images/next.png" alt = "Next" > < / a >
< / div >
< / body >
< / html >