1 | // |
---|
2 | // Boost.Pointer Container |
---|
3 | // |
---|
4 | // Copyright Thorsten Ottosen 2003-2005. Use, modification and |
---|
5 | // distribution is subject to the Boost Software License, Version |
---|
6 | // 1.0. (See accompanying file LICENSE_1_0.txt or copy at |
---|
7 | // http://www.boost.org/LICENSE_1_0.txt) |
---|
8 | // |
---|
9 | // For more information, see http://www.boost.org/libs/ptr_container/ |
---|
10 | // |
---|
11 | |
---|
12 | #include <boost/ptr_container/ptr_sequence_adapter.hpp> |
---|
13 | #include <vector> |
---|
14 | #include <boost/ptr_container/ptr_map_adapter.hpp> |
---|
15 | #include <map> |
---|
16 | |
---|
17 | template< class T > |
---|
18 | struct my_ptr_vector : |
---|
19 | public boost::ptr_sequence_adapter< std::vector<T*> > |
---|
20 | { |
---|
21 | |
---|
22 | }; |
---|
23 | |
---|
24 | |
---|
25 | template< class Key, class T, class Pred = std::less<Key>, |
---|
26 | class Allocator = std::allocator< std::pair<const Key, T> > > |
---|
27 | struct my_map : public std::map<Key,T,Pred,Allocator> |
---|
28 | { |
---|
29 | explicit my_map( const Pred& pred = Pred(), |
---|
30 | const Allocator& alloc = Allocator() ) |
---|
31 | { } |
---|
32 | }; |
---|
33 | |
---|
34 | #include <string> |
---|
35 | struct Foo {}; |
---|
36 | |
---|
37 | typedef boost::ptr_map_adapter< my_map<std::string,Foo*> > foo_map; |
---|
38 | |
---|
39 | template< class Key, class T, class Pred = std::less<Key> > |
---|
40 | struct my_ptr_map : public boost::ptr_map_adapter< std::map<Key,T*,Pred> > |
---|
41 | { |
---|
42 | |
---|
43 | }; |
---|
44 | |
---|
45 | typedef my_ptr_map<std::string,Foo> foo_map2; |
---|
46 | |
---|
47 | |
---|
48 | int main() |
---|
49 | { |
---|
50 | |
---|
51 | my_ptr_vector<Foo> vec; |
---|
52 | vec.push_back( new Foo ); |
---|
53 | foo_map m1; |
---|
54 | foo_map2 m2; |
---|
55 | std::string s(""); |
---|
56 | m1.insert( s, new Foo ); |
---|
57 | m2.insert( s, new Foo ); |
---|
58 | |
---|
59 | |
---|
60 | } |
---|
61 | |
---|