Как выполнить общую печать для типа ключа и карты - PullRequest
2 голосов
/ 14 марта 2009

Применительно к этому вопросу StackoVerflow 529831 , это был один из предложенных подходов

template<typename Map> typename Map::const_iterator 
greatest_less(Map const& m, typename Map::key_type const& k) {
    //How to print K and Map m
    typename Map::const_iterator it = m.lower_bound(k);
    if(it != m.begin()) {
      return --it;
    }
    return m.end();
}

Мне было бы интересно напечатать ключ K и Map m, как бы по этому поводу.

1 Ответ

4 голосов
/ 14 марта 2009

Используйте оператор <<, убедившись, что << определен для обоих типов Map::key_type и Map::data_type (вы узнаете, что это не так, поскольку код не будет компилироваться.)

cout << k << endl;
for (typename Map::const_iterator it = m.begin(); it != m.end(); ++i) {
  cout << it->first << " -> " << it->second << endl;
}

например. если ваш Map::data_type это struct fraction с членами float numerator и float denominator,

ostream& operator<<(ostream& os, const fraction& obj) {
   return os << obj.numerator << '/' << obj.denominator;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...