当cmp函数写在类外时:
[cpp] view plain copy bool comp(Interval a, Interval b) // 注意comp函数可以为static bool或者bool,返回值为bool类型。a.start<b.start为升序 { return a.start < b.start; } class Solution { public: void merge(vector<Interval>& intervals) { sort(intervals.begin(), intervals.end(), comp); } };写在类内时,要加上static,lexicographical_compare 最后要求的是一个普通函数指针,而不是成员函数指针,所以要加static:
class Solution { public: static bool cmp(const pair<int, int>&p1, const pair<int, int>&p2){//要加上Static return p1.first > p2.first; } vector<string> findRelativeRanks(vector<int>& nums) { vector<string>v(nums.size(), ""); vector< pair<int, int> >rank; string medal[3] = { "Gold Medal", "Silver Medal", "Bronze Medal" }; for (unsigned int i = 0; i < nums.size(); i++){ rank.push_back(make_pair(nums[i], i)); } sort(rank.begin(), rank.end(), cmp); for (unsigned i = 0; i < nums.size(); i++){ if (i < 3)v[rank[i].second] = medal[i]; else v[rank[i].second] = to_string(i + 1); } return v; } }; http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare