В файле заголовка я определил запись struct . Я хотел бы использовать его для возможной сортировки, поэтому я хочу перегрузить меньший оператор . Вот три способа, которые я заметил в различном коде. Я грубо заметил, что:
Если я собираюсь поместить record в std :: set , map , Приоритет Запись> v , а затем вызовите make_heap (v.begin (), v.end ()) и т. Д. Затем только версия 1 работает.
В файле заголовка я определил запись struct . Я хотел бы использовать его для возможной сортировки, поэтому я хочу перегрузить меньший оператор . Вот три способа, которые я заметил в различном коде. Я грубо заметил, что: [list] [*] Если я собираюсь поместить record в std :: set , map , Приоритет Запись> v , а затем вызовите make_heap (v.begin (), v.end ()) и т. Д. Затем только версия 1 работает. [/list]
[code]struct Record { char c; int num;
//version 1 bool operator num>rhs.num; }
//version 2 friend bool operator num>rhs->num; } }; < /code> в том же файле заголовка, например: < /p> //version 3 inline bool operator num>rhs->num; } [/code] Каковы различия между этими тремя методами и каковы правильные места для каждой версии?