fork download
  1. #include <iostream>
  2. #include <utility>
  3. #include <map>
  4. #include <list>
  5. struct Asteroid {};
  6. typedef std::list<Asteroid> list_t;
  7. typedef list_t::iterator iter_t;
  8. typedef std::pair<iter_t, iter_t> pair_t;
  9. struct Comp {
  10. bool operator()(const pair_t& p1, const pair_t& p2) const {
  11. return &*p1.first < &*p2.first ? true :
  12. &*p2.first < &*p1.first ? false :
  13. &*p1.second < &*p2.second; // won't handle the end iterators!
  14. }
  15. };
  16. int main()
  17. {
  18. list_t l;
  19. l.push_back(Asteroid());
  20. l.push_back(Asteroid());
  21. l.push_back(Asteroid());
  22.  
  23. std::map<pair_t, double, Comp> m;
  24. m[make_pair(l.begin(), l.begin())] = 3.14;
  25. m[make_pair(l.begin(), std::next(l.begin()))] = 3.14;
  26. m[make_pair(l.begin(), l.begin())] = 3.14;
  27.  
  28. std::cout << "Map has " << m.size() << " elements\n";
  29. }
Success #stdin #stdout 0s 2964KB
stdin
Standard input is empty
stdout
Map has 2 elements