std.container.RedBlackTree versus C++ std::set
Dan
dbdavidson at yahoo.com
Fri Feb 15 17:08:08 PST 2013
On Friday, 15 February 2013 at 23:41:50 UTC, Steven Schveighoffer
wrote:
> In any case, the example was bad, the point that which is
> better depends on the situation is still correct.
The compiler has to do something with "a<b". I would hope for a
fundamental type it can avoid the lowering and just do whatever
assembly is optimal. For a non-fundamental type, what is the case
where (a.opCmp(b)<0) is more optimal than a comparable
(a.opLess(b))?
It is easy to create an inefficient implementation of opCmp that
calls "<" twice.
struct S {
string s;
int opCmp ( const ref S other ) {
if ( s<other.s ) {
return -1;
} else if ( other.s<s ) {
return 1;
} else {
return 0;
}
}
}
My point was, you can use compile time reflection to generate a
suitable opCmp that uses s.opCmp if it exists or does the long
version of two comparisons if not.
Thanks
Dan
More information about the Digitalmars-d-learn
mailing list