fork(1) download
  1. #include <iostream>
  2. #include <string>
  3. #include <map>
  4. #include <algorithm>
  5.  
  6. int main(){
  7. std::string names_str[7] = {"Alex", "Louis", "Alex", "Simon", "Matthew", "Carl", "Simon"};
  8. int names[7];
  9.  
  10. std::map<std::string, int> counter_map;
  11. int counter = 0;
  12.  
  13. std::transform(std::begin(names_str), std::end(names_str), std::begin(names),
  14. [&](const std::string &name) {
  15. auto iter = counter_map.find(name);
  16. if (iter == counter_map.end())
  17. iter = counter_map.insert(std::make_pair(name, counter++)).first;
  18. return iter->second;
  19. }
  20. );
  21.  
  22. for (int i = 0; i < 7; ++i)
  23. std::cout << names[i] << ' ';
  24. return 0;
  25. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
0 1 0 2 3 4 2