27 #ifndef CEREAL_TYPES_MAP_HPP_
28 #define CEREAL_TYPES_MAP_HPP_
30 #include <cereal/cereal.hpp>
38 template <
class Archive,
class MapT>
inline
39 void save( Archive & ar, MapT
const & map )
41 ar( make_size_tag( map.size() ) );
43 for(
const auto & i : map )
45 ar( make_map_item(i.first, i.second) );
49 template <
class Archive,
class MapT>
inline
50 void load( Archive & ar, MapT & map )
53 ar( make_size_tag( size ) );
57 auto hint = map.begin();
58 for(
size_t i = 0; i < size; ++i )
60 typename MapT::key_type key;
61 typename MapT::mapped_type value;
63 ar( make_map_item(key, value) );
64 hint = map.insert(hint, {key, value} );
70 template <
class Archive,
class K,
class T,
class C,
class A>
inline
71 void save( Archive & ar, std::map<K, T, C, A>
const & map )
73 map_detail::save( ar, map );
77 template <
class Archive,
class K,
class T,
class C,
class A>
inline
78 void load( Archive & ar, std::map<K, T, C, A> & map )
80 map_detail::load( ar, map );
84 template <
class Archive,
class K,
class T,
class C,
class A>
inline
85 void save( Archive & ar, std::multimap<K, T, C, A>
const & multimap )
87 map_detail::save( ar, multimap );
91 template <
class Archive,
class K,
class T,
class C,
class A>
inline
92 void load( Archive & ar, std::multimap<K, T, C, A> & multimap )
94 map_detail::load( ar, multimap );
98 #endif // CEREAL_TYPES_MAP_HPP_