fork download
  1. #include <iostream>
  2. #include <map>
  3. #include <vector>
  4.  
  5. template <typename KEY, typename VALUE>
  6. std::vector<VALUE>
  7. collect_absents(const std::map<KEY, VALUE>& map, const std::vector<KEY>& present)
  8. {
  9. std::vector<VALUE> res;
  10.  
  11. auto mit = map.begin();
  12. auto vit = present.begin();
  13.  
  14. while (mit != map.end() && vit != present.end())
  15. {
  16. if (*vit < mit->first) {
  17. ++vit;
  18. } else if (mit->first < *vit) {
  19. res.push_back(mit->second);
  20. ++mit;
  21. } else { // equal
  22. ++vit;
  23. ++mit;
  24. }
  25. }
  26. for (; mit != map.end(); ++mit) {
  27. res.push_back(mit->second);
  28. }
  29. return res;
  30. }
  31.  
  32.  
  33. int main()
  34. {
  35. std::map<int, int> myMap = {{1,2},{2,9},{3,5},{4,7}};
  36. std::vector<int> present = {1,3};
  37. for (auto e : collect_absents(myMap, present))
  38. {
  39. std::cout << e << " ";
  40. }
  41. std::cout << std::endl;
  42. }
  43.  
Success #stdin #stdout 0s 4384KB
stdin
Standard input is empty
stdout
9 7