fork(2) download
  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. #include <cstdlib>
  5.  
  6. std::vector<int> generate_numbers(int amount, int max_num)
  7. {
  8. std::vector<int> numbers(amount);
  9. for (int i = 0; i < amount; ++i) {
  10. numbers[i] = rand() % max_num + 1;
  11. }
  12. return numbers;
  13. }
  14.  
  15. std::map<int, int> count_numbers(const std::vector<int> &numbers)
  16. {
  17. // Count numbers
  18. std::map<int, int> counts; // We will store the count in a map for fast lookup (C++11's unordered_map has even faster lookup)
  19. for (size_t i = 0; i < numbers.size(); ++i) { // For each number
  20. counts[numbers[i]]++; // Add 1 to its count
  21. }
  22. return counts;
  23. }
  24.  
  25. void print_counts(const std::map<int, int> &counts)
  26. {
  27. for(std::map<int, int>::const_iterator it = counts.begin();
  28. it != counts.end();
  29. ++it) { // For each number stored in the map (this automatically filters those with count 0)
  30. std::cout << it->first << ": " << it->second << std::endl; // Output its count
  31. }
  32. }
  33.  
  34. int main() {
  35. srand(0); // So that we get the same result every time
  36. std::vector<int> numbers = generate_numbers(10000, 500);
  37. std::map<int, int> counts = count_numbers(numbers);
  38. return 0;
  39. }
Success #stdin #stdout 0s 3464KB
stdin
Standard input is empty
stdout
Standard output is empty