11 std::ostream& operator<<(std::ostream& os,
const std::set<T> &set_objs);
15 std::ostream& operator<<(std::ostream& os,
const std::vector<T> &vector_objs);
18 template <
typename T1,
typename T2>
19 std::ostream& operator<<(std::ostream& os,
const std::pair<T1, T2> &pair_objs);
22 template <
typename T,
size_t N>
23 std::ostream& operator<<(std::ostream& os,
const std::array<T, N> &arr_objs);
26 template <
typename Tkey,
typename Tval>
27 std::ostream& operator<<(std::ostream& os,
const std::map<Tkey, Tval> &map_objs);
30 template <
typename Tkey1,
typename Tkey2,
typename Tval>
31 void print_keys(std::ostream& os,
const std::map<Tkey1, std::map<Tkey2, Tval>> &nested_map);
34 template <
typename Tkey1,
typename Tkey2,
typename Tkey3,
typename Tval>
35 void print_keys(std::ostream& os,
const std::map<Tkey1, std::map<Tkey2, std::map<Tkey3, Tval>>> &nested_map);
38 template <
typename Tkey1,
typename Tkey2,
typename Tval>
39 int get_num_keys(
const std::map<Tkey1, std::map<Tkey2, Tval>> &nested_map);
42 template <
typename Tkey1,
typename Tkey2,
typename Tkey3,
typename Tval>
43 int get_num_keys(
const std::map<Tkey1, std::map<Tkey2, std::map<Tkey3, Tval>>> &nested_map);
45 #include "stl_io_helper.hpp"