On Sep 29, 9:51 pm, Pete Becker <p...@versatilecoding.comwrote:
On 2008-09-29 13:45:24 -0400, Juha Nieminen <nos...@thanks.invalidsaid:
Xiaobin Huang wrote:
you can provide your own predicate.
class cmp {
public:
cmp(...) {
// init thePoint_
}
bool operator() (point const& lh, point const& rh) {
// ...
}
private:
point thePoint_;
};
Nitpicking, but isn't that called a comparator? If is it
*also* a predicate?
There is a version of std::sort that takes a predicate. It
doesn't care whether you call it a comparator, a functoid, or
fred. But when you're talking about std::sort, if you refer to
a predicate by some other name, you run the risk of confusing
your listener.
While it's obviously a predicate; any functional object which
returns bool is a predicate. The standard never uses the word
predicate for it, however, and calls it Compare. It also
imposes a number of additional constraints on it which don't
apply to predicates in general. In fact, it even says that "A
sequence is sorted with respect to a comparator comp if [...]",
using the very same word as Juha. So while it is a predicate,
I'd consider "comparator" a more precise word. (All comparators
are predicates, but not all predicates are comparators. And
here, we need a predicate which is a comparator.)
--
James Kanze (GABI Software) email:ja*********@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34