我的vector<int> jobs;
在其中我有一堆数字可以说[4,6,2,7,262,15,623,9]
如何从最高到最低的数字对此向量进行排序?那么最高的数字在前面?
我尝试使用它,但它没有用。程序崩溃。
struct myclass {
bool operator() (int i,int j) { return (i<j);}
} myobject;
std::sort (JobPool.end(), JobPool.begin(), myobject);
答案 0 :(得分:3)
您的begin
和end
迭代器的顺序错误。您应该将std::sort
称为:
std::sort(JobPool.begin(), JobPool.end(), myobject);
然后你应该使比较器实际上是一个以相反顺序工作的比较器:
struct myclass {
bool operator()(int i, int j) const { return j<i; }
} myobject;
然后你应该注意到标准库已经提供了std::greater:
std::sort(JobPool.begin(), JobPool.end(), std::greater<int>());