3 Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000
5 Distributed under the Boost Software License, Version 1.0.
6 (See accompanying file LICENSE_1_0.txt or copy at
7 http://www.boost.org/LICENSE_1_0.txt)
10 <Title>Associative Property Map Adaptor
</Title>
11 <BODY BGCOLOR=
"#ffffff" LINK=
"#0000ee" TEXT=
"#000000" VLINK=
"#551a8b"
13 <IMG SRC=
"../../../boost.png"
14 ALT=
"C++ Boost" width=
"277" height=
"86">
19 <H2><A NAME=
"sec:associative-property-map"></A>
22 associative_property_map
<UniquePairAssociativeContainer
>
26 This property map is an adaptor that converts any type that is a model
28 href=
"http://www.sgi.com/tech/stl/PairAssociativeContainer.html">Pair
29 Associative Container
</a> and
<a
30 href=
"http://www.sgi.com/tech/stl/UniqueAssociativeContainer.html">Unique
31 Associative Container
</a> such as
<a
32 href=
"http://www.sgi.com/tech/stl/Map.html"><tt>std::map
</tt></a> into
33 a mutable
<a href=
"./LvaluePropertyMap.html">Lvalue Property Map
</a>.
34 Note that the adaptor only retains a reference to the container, so
35 the lifetime of the container must encompass the use of the adaptor.
40 <a href=
"../example/example1.cpp">example1.cpp
</a>:
41 <pre>#include
<iostream
>
43 #include
<string
>
44 #include
<boost/property_map/property_map.hpp
>
47 template
<typename AddressMap
>
48 void foo(AddressMap address)
50 typedef typename boost::property_traits
<AddressMap
>::value_type value_type;
51 typedef typename boost::property_traits
<AddressMap
>::key_type key_type;
53 value_type old_address, new_address;
54 key_type fred =
"Fred
";
55 old_address = get(address, fred);
56 new_address =
"384 Fitzpatrick Street
";
57 put(address, fred, new_address);
59 key_type joe =
"Joe
";
60 value_type
& joes_address = address[joe];
61 joes_address =
"325 Cushing Avenue
";
67 std::map
<std::string, std::string
> name2address;
68 boost::associative_property_map
< std::map
<std::string, std::string
> >
69 address_map(name2address);
71 name2address.insert(make_pair(std::string(
"Fred
"),
72 std::string(
"710 West
13th Street
")));
73 name2address.insert(make_pair(std::string(
"Joe
"),
74 std::string(
"710 West
13th Street
")));
78 for (std::map
<std::string, std::string
>::iterator i = name2address.begin();
79 i != name2address.end(); ++i)
80 std::cout
<< i-
>first
<< ":
" << i-
>second
<< "\n
";
85 <H3>Where Defined
</H3>
88 <a href=
"../../../boost/property_map/property_map.hpp"><TT>boost/property_map/property_map.hpp
</TT></a>
93 <a href=
"./LvaluePropertyMap.html">Lvalue Property Map
</a>
97 <H3>Template Parameters
</H3>
103 <th>Parameter
</th><th>Description
</th><th>Default
</th>
108 <TD><TT>UniquePairAssociativeContainer
</TT></TD>
109 <TD>Must be a model of both
<a
110 href=
"http://www.sgi.com/tech/stl/PairAssociativeContainer.html">Pair
111 Associative Container
</a> and
<a
112 href=
"http://www.sgi.com/tech/stl/UniqueAssociativeContainer.html">Unique
113 Associative Container
</a> .
</TD>
123 In addition to the methods and functions required by
<a
124 href=
"./LvaluePropertyMap.html">Lvalue Property Map
</a>, this
125 class has the following members.
130 property_traits
<associative_property_map
>::value_type
132 This is the same type as
133 <TT>UniquePairAssociativeContainer::data_type
</TT>.
138 associative_property_map()
143 associative_property_map(UniquePairAssociativeContainer
& c)
150 data_type
& operator[](const key_type
& k) const
152 The operator bracket for property access.
153 The
<TT>key_type
</TT> and
154 <TT>data_type
</TT> types are from the typedefs inside of
155 <TT>UniquePairAssociativeContainer
</TT>.
159 <h3>Non-Member functions
</h3>
164 template
<typename UniquePairAssociativeContainer
>
165 associative_property_map
<UniquePairAssociativeContainer
>
166 make_assoc_property_map(UniquePairAssociativeContainer
& c);
168 A function for conveniently creating an associative property map.
179 <TD nowrap
>Copyright ©
2002</TD><TD>
180 <a HREF=
"http://www.boost.org/people/jeremy_siek.htm">Jeremy Siek
</a>,
181 Indiana University (
<A
182 HREF=
"mailto:jsiek@osl.iu.edu">jsiek@osl.iu.edu
</A>)
<br>
183 <A HREF=
"http://www.boost.org/people/liequan_lee.htm">Lie-Quan Lee
</A>, Indiana University (
<A HREF=
"mailto:llee1@osl.iu.edu">llee1@osl.iu.edu
</A>)
<br>
184 <A HREF=
"http://www.osl.iu.edu/~lums">Andrew Lumsdaine
</A>,
185 Indiana University (
<A
186 HREF=
"mailto:lums@osl.iu.edu">lums@osl.iu.edu
</A>)