fork download
  1. #include <map>
  2. #include <vector>
  3. #include <iostream>
  4. using std::cout;
  5. using std::endl;
  6.  
  7.  
  8. // Iterator pair based interface
  9. template <class Iterator>
  10. std::map<typename Iterator::value_type,int>
  11. count(Iterator begin, Iterator end) {
  12. std::map<typename Iterator::value_type,int> counts;
  13. for (Iterator i = begin; i != end; ++i)
  14. counts[*i]++;
  15. return counts;
  16. }
  17.  
  18. // Sequence interface
  19. template <class Sequence>
  20. inline std::map<typename Sequence::value_type,int>
  21. count(Sequence seq) {
  22. return count(seq.begin(), seq.end());
  23. }
  24.  
  25.  
  26. int main()
  27. {
  28. std::vector<int> x;
  29. x.push_back(1);
  30. x.push_back(2);
  31. x.push_back(3);
  32. x.push_back(2);
  33. x.push_back(2);
  34.  
  35. std::map<int,int> counts = count(x);
  36. for (std::map<int,int>::iterator c = counts.begin(), e = counts.end(); c != e; ++c)
  37. cout << c->first << '\t' << c->second << endl;
  38. }
Success #stdin #stdout 0s 3032KB
stdin
Standard input is empty
stdout
1	1
2	3
3	1