11 std::ostream& operator<<(std::ostream& os,
const std::set<T> &set_objs)
14 if (!set_objs.empty())
16 auto pobj = set_objs.cbegin();
17 for (; pobj != std::prev(set_objs.cend()); pobj++)
21 os <<
"](s" << set_objs.size() <<
")";
27 std::ostream& operator<<(std::ostream& os,
const std::vector<T> &vector_objs)
30 if (!vector_objs.empty())
32 auto pobj = vector_objs.cbegin();
33 for (; pobj != std::prev(vector_objs.cend()); pobj++)
37 os <<
"](v" << vector_objs.size() <<
")";
42 template <
typename T1,
typename T2>
43 std::ostream& operator<<(std::ostream& os,
const std::pair<T1, T2> &pair_objs)
45 os <<
"{" << pair_objs.first <<
"," << pair_objs.second <<
"}";
50 template <
typename T,
size_t N>
51 std::ostream& operator<<(std::ostream& os,
const std::array<T, N> &arr_objs)
54 for (
int i = 0; i < N - 1; i++)
55 os << arr_objs[i] <<
",";
56 os << arr_objs[N-1] <<
"](a" << N <<
")";
61 template <
typename Tkey,
typename Tval>
62 std::ostream& operator<<(std::ostream& os,
const std::map<Tkey, Tval> &map_objs)
65 for (
const auto& kv: map_objs)
67 os <<
"\"" << kv.first <<
"\":\"" << kv.second <<
"\"\n";
74 template <
typename Tkey1,
typename Tkey2,
typename Tval>
75 void print_keys(std::ostream& os,
const std::map<Tkey1, std::map<Tkey2, Tval>> &nested_map)
77 for (
const auto& k1k2v: nested_map)
78 for (
const auto& k2v: k1k2v.second)
79 os << k1k2v.first <<
" " << k2v.first <<
"\n";
83 template <
typename Tkey1,
typename Tkey2,
typename Tkey3,
typename Tval>
84 void print_keys(std::ostream& os,
const std::map<Tkey1, std::map<Tkey2, std::map<Tkey3, Tval>>> &nested_map)
86 for (
const auto& k1k2k3v: nested_map)
87 for (
const auto& k2k3v: k1k2k3v.second)
88 for (
const auto& k3v: k2k3v.second)
89 os << k1k2k3v.first <<
" " << k2k3v.first <<
" " << k3v.first <<
"\n";
93 template <
typename Tkey1,
typename Tkey2,
typename Tval>
94 int get_num_keys(
const std::map<Tkey1, std::map<Tkey2, Tval>> &nested_map)
97 for (
const auto& k1k2v: nested_map)
98 for (
const auto& k2v: k1k2v.second)
104 template <
typename Tkey1,
typename Tkey2,
typename Tkey3,
typename Tval>
105 int get_num_keys(
const std::map<Tkey1, std::map<Tkey2, std::map<Tkey3, Tval>>> &nested_map)
108 for (
const auto& k1k2k3v: nested_map)
109 for (
const auto& k2k3v: k1k2k3v.second)
110 for (
const auto& k3v: k2k3v.second)