fork download
  1. class custom_cmp {
  2. public:
  3. custom_cmp(const map<int, double> &_cmptable):cmptable(_cmptable){}
  4. bool operator()(const int &lhs, const int &rhs)
  5. {
  6. if(cmptable[lhs] > cmptable[rhs])
  7. return 1;
  8. else if(cmptable[lhs] == cmptable[rhs])
  9. return lhs < rhs;
  10. else return 0;
  11. }
  12. map<int, double> cmptable;
  13. };
  14.  
  15. class A
  16. {
  17. public:
  18. // 如何在宣告class A object時也建立好內部map成員的比較函式
  19. // 像main function宣告的方式一樣
  20. A(const map<int, double> &_cmptable):cmptable(_cmptable){}
  21.  
  22. map<int, double> cmptable;
  23. // 底下不行這樣寫
  24. custom_cmp cmpobject(cmptable);
  25. map< int, shared_ptr<char>, custom_cmp> header(cmpobject);
  26. };
  27.  
  28. int main(int argc, char *argv[])
  29. {
  30. // 在main function內這樣宣告可以
  31. map<int, double> cmptable;
  32. custom_cmp cmpobject(cmptable);
  33. map< int, shared_ptr<char>, custom_cmp> header(cmpobject);
  34.  
  35. // 想在宣告A的物件時, Aobj內的header可根據cmptable來排序
  36. A Aobj(cmptable);
  37.  
  38. return 0;
  39. }
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty