20 #ifndef STANDARD_OPERATORS_H_
21 #define STANDARD_OPERATORS_H_
29 template <
typename K,
typename V> ostream& operator<<(ostream& ost, unordered_map<K,V>
const& mapping) {
30 typename unordered_map<K,V>::const_iterator iter = mapping.cbegin();
32 while(iter != mapping.cend()) {
33 ost <<
"[" << iter->first <<
"," << iter->second <<
"]";
43 template <
typename T> ostream& operator<<(ostream& ost, vector<T>
const& vec) {
44 typename vector<T>::const_iterator iter = vec.cbegin();
46 if(iter != vec.cend()) {
50 for (; iter != vec.cend(); iter++)
61 template <
typename T> ostream& operator<<(ostream& ost, unordered_set<T>
const& vec) {
62 typename unordered_set<T>::const_iterator iter = vec.cbegin();
64 if(iter != vec.cend()) {
68 for (; iter != vec.cend(); iter++)
79 template <
typename T1,
typename T2> ostream& operator<<(ostream& ost, pair<T1,T2>
const& pair) {
80 ost <<
"(" << pair.first <<
"," << pair.second <<
")";