fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <set>
  4.  
  5. struct object
  6. {
  7. object(const std::string&_object_name):object_name(_object_name){}
  8. bool operator<(const object&o)const{return object_name<o.object_name;}
  9. bool operator<(const std::string&str)const{return object_name<str;}
  10. std::string object_name;
  11. char some_data[100500];
  12. };
  13.  
  14. class proxy
  15. {
  16. public:
  17. proxy( const std::string& name, object* ptr = nullptr )
  18. : name_(name), ptr_(ptr) {}
  19. bool operator<(const proxy& rhs) const { return name_ < rhs.name_; }
  20. std::string name() const { return name_; }
  21. private:
  22. const std::string name_;
  23. object* ptr_;
  24. };
  25.  
  26. int main() {
  27.  
  28. proxy one( "john", new object("john") );
  29. proxy two( "jane", new object("jane") );
  30.  
  31. std::multiset<proxy> ms = { one, two };
  32.  
  33. proxy f("jane");
  34.  
  35. auto it = ms.find(f);
  36. if( it != ms.end() )
  37. {
  38. std::cout << it->name() << std::endl;
  39. }
  40. else
  41. {
  42. std::cout << "not found\n";
  43. }
  44.  
  45. return 0;
  46. }
Success #stdin #stdout 0s 3628KB
stdin
Standard input is empty
stdout
jane