Multiple sort options in C++
Hi
I have the following private part of a class defined as follows:
private:
struct stats {
double ISIsum;
int authorCount;
bool operator<(const stats &a) const { return ISIsum > a.ISIsum;}
} *stats_;
bool compareSortByISI(const stats &lhs, const stats &rhs);
};
This enables me to sort this struct by calling:
std::sort(stats_, stats_ + authors_->getMaximumAuthors());
My question is, what if I want to have the option to sort by authorCount or ISIsum at run time. Is there any way to do this?
I can't see how I can override operator< twice and decide which one to call at use time.
Thx
G
Re: Multiple sort options in C++
Quote:
Originally Posted by
gxkendall
My question is, what if I want to have the option to sort by authorCount or ISIsum at run time. Is there any way to do this?
I can't see how I can override operator< twice and decide which one to call at use time.
Look at the documentation for std::sort.
There are two overloads and the second takes a comparator that is used instead of operator <.
So, you can simply implement two functions that compare either authorCount or ISIsum and then use one or the other based on other information.
Re: Multiple sort options in C++
Excellent - took a bit of working out, but up and running.
Many thanks.
G