fork download
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <map>
  4. #include <string>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. class A
  10. {
  11. private:
  12. string m_memberA;
  13.  
  14. public:
  15. explicit A(string inp):m_memberA(inp){}
  16. int GetValue()
  17. {
  18. return m_memberA.size();
  19. }
  20. };
  21.  
  22. class B
  23. {
  24. private:
  25. int m_memberB;
  26. public:
  27. explicit B(int inp):m_memberB(inp){}
  28. };
  29.  
  30. class C
  31. {
  32. private:
  33. double m_memberC;
  34. public:
  35. explicit C(double inp):m_memberC(inp){}
  36. };
  37.  
  38. class functor
  39. {
  40. private:
  41. A* m_member;
  42. public:
  43. explicit functor(A* inp): m_member(inp){}
  44.  
  45. bool operator()(const std::pair<A* const, B*>& iter) const
  46. {
  47. return (m_member->GetValue() == (iter.first)->GetValue());
  48. }
  49.  
  50. bool operator()(const std::pair<A* const, C*>& iter) const
  51. {
  52. return (m_member->GetValue() == (iter.first)->GetValue());
  53. }
  54. };
  55.  
  56. int main(int argc, char *argv[])
  57. {
  58. A* obj_ptr_A1 = new A("Hello");
  59. A* obj_ptr_A2 = new A("MyWorld");
  60.  
  61. B* obj_ptr_B1 = new B(22);
  62. B* obj_ptr_B2 = new B(11);
  63.  
  64. C* obj_ptr_C1 = new C(5.5);
  65. C* obj_ptr_C2 = new C(9.5);
  66.  
  67. map<A*, B*> myMap1;
  68. myMap1.insert(make_pair(obj_ptr_A1, obj_ptr_B1));
  69. myMap1.insert(make_pair(obj_ptr_A2, obj_ptr_B2));
  70.  
  71. map<A*, C*> myMap2;
  72. myMap2.insert(make_pair(obj_ptr_A1, obj_ptr_C1));
  73. myMap2.insert(make_pair(obj_ptr_A2, obj_ptr_C2));
  74.  
  75. if(find_if(myMap1.begin(), myMap1.end(), functor(obj_ptr_A2)) != myMap1.end())
  76. {
  77. cout << "Found" << endl;
  78. }
  79.  
  80. if(find_if(myMap2.begin(), myMap2.end(), functor(obj_ptr_A2)) != myMap2.end())
  81. {
  82. cout << "Found" << endl;
  83. }
  84.  
  85. delete obj_ptr_A1;
  86. delete obj_ptr_A2;
  87. delete obj_ptr_B1;
  88. delete obj_ptr_B2;
  89. delete obj_ptr_C1;
  90. delete obj_ptr_C2;
  91.  
  92. system("PAUSE");
  93. return EXIT_SUCCESS;
  94. }
Success #stdin #stdout #stderr 0s 3432KB
stdin
Standard input is empty
stdout
Found
Found
stderr
sh: PAUSE: not found