fork(2) download
  1. #include <iostream>
  2. #include <map>
  3. #include <string>
  4.  
  5. template <typename K, typename V>
  6. void my_merge(std::map<K, V>& m1, const std::map<K, V> m2)
  7. {
  8. auto it1 = m1.begin();
  9. auto it2 = m2.begin();
  10.  
  11. while (it1 != m1.end() && it2 != m2.end()) {
  12. if (*it1 < *it2) {
  13. it1 = m1.erase(it1);
  14. } else if (*it2 < *it1) {
  15. m1.insert(*it2);
  16. ++it2;
  17. } else {
  18. ++it1;
  19. ++it2;
  20. }
  21. }
  22. m1.erase(it1, m1.end());
  23. m1.insert(it2, m2.end());
  24. }
  25.  
  26. int main() {
  27. std::map<int, std::string> m1 {{1, "One"}, {2, "Two"}, {3, "Three"}};
  28. const std::map<int, std::string> m2 {{1, "OneB"}, {2, "TwoB"}, {4, "Four"}};
  29.  
  30. my_merge(m1, m2);
  31. for (const auto& p : m1) {
  32. std::cout << p.first << ":" << p.second << std::endl;
  33. }
  34. }
  35.  
Success #stdin #stdout 0s 3464KB
stdin
Standard input is empty
stdout
1:OneB
2:TwoB
4:Four