6 #ifndef MYRAMATH_UTILITY_STLPRINT_H 7 #define MYRAMATH_UTILITY_STLPRINT_H 26 #ifdef MYRAMATH_ENABLE_CPP11 28 #include <unordered_set> 29 #include <unordered_map> 35 template<
class T> std::ostream& operator << (std::ostream& out, const std::vector<T>& v)
38 for (
typename std::vector<T>::const_iterator i = v.begin(); i != v.end(); ++i)
40 out <<
"] (" << v.size() <<
")";
46 template<
class T> std::ostream& operator << (std::ostream& out, const std::list<T>& l)
49 for (
typename std::list<T>::const_iterator i = l.begin(); i != l.end(); ++i)
56 template<
class T> std::ostream& operator << (std::ostream& out, const std::deque<T>& v)
59 for (
typename std::deque<T>::const_iterator i = v.begin(); i != v.end(); ++i)
61 out <<
"] (" << v.size() <<
")";
67 template<
class First,
class Second> std::ostream& operator << (std::ostream& out, const std::pair<First,Second>& p)
69 out <<
"{" << p.first <<
"," << p.second <<
"}";
74 template<
class T,
class Comparator> std::ostream& operator << (std::ostream& out, const std::set<T,Comparator>& s)
77 for (
typename std::set<T>::const_iterator i = s.begin(); i != s.end(); ++i)
83 template<
class T,
class Comparator> std::ostream& operator << (std::ostream& out, const std::multiset<T,Comparator>& s)
86 for (
typename std::multiset<T>::const_iterator i = s.begin(); i != s.end(); ++i)
93 template<
class Key,
class Value,
class Comparator> std::ostream& operator << (std::ostream& out, const std::map<Key,Value,Comparator>& m)
96 for (
typename std::map<Key,Value,Comparator>::const_iterator i = m.begin(); i != m.end(); ++i)
103 template<
class Key,
class Value,
class Comparator> std::ostream& operator << (std::ostream& out, const std::multimap<Key,Value,Comparator>& m)
106 for (
typename std::multimap<Key,Value,Comparator>::const_iterator i = m.begin(); i != m.end(); ++i)
112 #ifdef MYRAMATH_ENABLE_CPP11 115 template<
class T,
size_t N> std::ostream& operator << (std::ostream& out, const std::array<T,N>& a)
118 for (
auto iterator = a.begin(); iterator != a.end(); ++iterator)
119 out << *iterator <<
" ";
125 template<
class Key,
class Value> std::ostream& operator << (std::ostream& out, const std::unordered_multimap<Key,Value>& m)
128 for (
auto iterator = m.begin(); iterator != m.end(); ++iterator)
129 out << *iterator <<
" ";
136 template<
class T> std::ostream& operator << (std::ostream& out, const std::unordered_set<T>& s)
139 for (
auto iterator = s.begin(); iterator != s.end(); ++iterator)
140 out << *iterator <<
" ";
146 template<
class Key,
class Value> std::ostream& operator << (std::ostream& out, const std::unordered_map<Key,Value>& m)
149 for (
auto iterator = m.begin(); iterator != m.end(); ++iterator)
150 out << *iterator <<
" ";
160 std::stringstream out;
Definition: stlprint.h:32
std::string stream2string(const T &t)
Uses a std::stringstream to serialize a T into a std::string, note T must have a "std::ostream << t" ...
Definition: stlprint.h:158