fork download
  1. #include <iostream>
  2. #include <memory>
  3. #include <string>
  4. #include <tuple>
  5. #include <map>
  6.  
  7. struct Mocha {
  8. std::string str;
  9. };
  10.  
  11. class Govno {
  12. std::map<std::tuple<int, int>, std::shared_ptr<Mocha>> map_;
  13. public:
  14. std::shared_ptr<Mocha> getMocha(int a, int b) {
  15. auto item = map_.find({ a, b });
  16. if(item == map_.end()) {
  17. return nullptr;
  18. }
  19. return item->second;
  20. }
  21. void setMocha(int a, int b, std::string str) {
  22. std::shared_ptr<Mocha> m;
  23. auto item = map_.find({ a, b });
  24. if(item != map_.end()) {
  25. m = item->second;
  26. } else {
  27. const auto res = map_.insert({{ a, b }, std::make_shared<Mocha>()});
  28. m = res.first->second;
  29. }
  30. m->str = std::move(str);
  31. }
  32. };
  33.  
  34. int main() {
  35. auto pgovno = std::make_unique<Govno>();
  36. pgovno->setMocha(42,42, "hui");
  37. auto pmocha = pgovno->getMocha(42,42);
  38. std::cout << pmocha->str << std::endl; //печатает hui
  39. pgovno->setMocha(42, 42, "pizda");
  40. std::cout << pmocha->str << std::endl; //печатает pizda
  41. }
Success #stdin #stdout 0s 4352KB
stdin
Standard input is empty
stdout
hui
pizda