3 // Copyright (c) 2006-2007 Matias Capeletto
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)
9 // VC++ 8.0 warns on usage of certain Standard Library and API functions that
10 // can be cause buffer overruns or other possible security issues if misused.
11 // See https://web.archive.org/web/20071014014301/http://msdn.microsoft.com/msdnmag/issues/05/05/SafeCandC/default.aspx
12 // But the wording of the warning is misleading and unsettling, there are no
13 // portable alternative functions, and VC++ 8.0's own libraries use the
14 // functions in question. So turn off the warnings.
15 #define _CRT_SECURE_NO_DEPRECATE
16 #define _SCL_SECURE_NO_DEPRECATE
18 // Boost.Bimap Example
19 //-----------------------------------------------------------------------------
21 #include <boost/config.hpp>
27 #include <boost/bimap/bimap.hpp>
29 using namespace boost::bimaps
;
31 //[ code_standard_map_comparison
33 template< class Map
, class CompatibleKey
, class CompatibleData
>
35 const CompatibleKey
& key
,
36 const CompatibleData
& data
)
38 typedef typename
Map::value_type value_type
;
39 typedef typename
Map::const_iterator const_iterator
;
41 m
.insert( value_type(key
,data
) );
42 const_iterator iter
= m
.find(key
);
45 assert( iter
->first
== key
);
46 assert( iter
->second
== data
);
48 std::cout
<< iter
->first
<< " --> " << iter
->second
;
55 typedef bimap
< set_of
<std::string
>, set_of
<int> > bimap_type
;
60 typedef std::map
< std::string
, int > map_type
;
63 use_it( m
, "one", 1 );
68 typedef bimap_type::left_map map_type
;
69 map_type
& m
= bm
.left
;
71 use_it( m
, "one", 1 );
74 // Reverse standard map
76 typedef std::map
< int, std::string
> reverse_map_type
;
79 use_it( rm
, 1, "one" );
84 typedef bimap_type::right_map reverse_map_type
;
85 reverse_map_type
& rm
= bm
.right
;
87 use_it( rm
, 1, "one" );