fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <functional>
  5. using namespace std;
  6.  
  7. struct node{
  8. string val1;
  9. string val2;
  10. vector<node *> connectedNodes;
  11. };
  12.  
  13. int compareNode(node a,node b){
  14. //describe the compare
  15. return a.val2.compare(b.val2); // or any other code
  16. }
  17.  
  18. template <class T, class Comparator>
  19. class PQueue {
  20. protected:
  21. Comparator compareFunction;
  22.  
  23. public:
  24.  
  25. PQueue (Comparator compareFunctionParameter) : compareFunction(compareFunctionParameter) {
  26. }
  27.  
  28. int someMethod() {
  29. // call the function
  30. node n1, n2;
  31. n1.val1 = "node1_val1";
  32. n1.val2 = "zzz";
  33.  
  34. n2.val1 = "node2_val1";
  35. n2.val2 = "aaa";
  36. return compareFunction(n1, n2);
  37. }
  38. };
  39.  
  40. int main() {
  41. // queue with pointer to function
  42. PQueue<node, int (*)(node, node)> pq(compareNode);
  43. cout << pq.someMethod() << endl;
  44.  
  45. // queue with lamda (anonimous function)
  46. PQueue<node, std::function<int (node, node)>> pq_lambda([](node a, node b) -> int {return a.val1.compare(b.val1);} );
  47. cout << pq_lambda.someMethod() << endl;
  48. return 0;
  49. }
  50.  
Success #stdin #stdout 0s 3436KB
stdin
Standard input is empty
stdout
1
-1