What about putting array.empty in object.d?
Jonathan M Davis
jmdavisProg at gmx.com
Thu Mar 22 11:31:54 PDT 2012
On Thursday, March 22, 2012 07:12:22 Steven Schveighoffer wrote:
> Note that the default std::list has O(1) length (as does dcollections'
> LinkedList). It's not as inevitable as you think.
It depends on bothe container its implementation as to how efficient length/size
is (and in the case of linked lists, it's generally a question of whether you
want splicing to be efficient or size/length to be efficient). But you don't have
to worry about how efficient length/size's implementation is when checking
whether a container is empty if you just always use empty rather than length
== 0, so it's a good habit to get into. There's generally no advantage to
using length == 0 over empty.
There's a slight advantage with D and arrays only in that empty isn't built into
arrays, so you have to import std.array to use empty, and empty is just a
wrapper around length == 0, which will then be _slightly_ less efficient without
-inline, but I'd still argue for using empty, because it avoids the whole issue
of length/size's efficiency.
Regardless, fortunately, it's not as big an issue in D as in C++ thanks to the
fact that Phobos defines length to be O(1) - and it's good that dcollections
does the same.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list