Meaning of .clear() for containers
Jesse Phillips
jessekphillips+D at gmail.com
Tue Jan 4 14:56:51 PST 2011
Steven Schveighoffer Wrote:
> On Tue, 04 Jan 2011 11:53:59 -0500, Jesse Phillips
> <jessekphillips+D at gmail.com> wrote:
>
> > Answering a question over on stack overflow I realized that clear() has
> > 2 meanings.
> >
> > TDPL says that clear should be used to free resources of the object and
> > place the object into an invalid state. That is failure can occur but
> > memory corruption is prevent, similar to null for pointer types.
> >
> > However for container types clear() is used to empty the container. It
> > is still valid to use the container after calling clear(), but the
> > definition from TDPL suggest that this can not be expected.
>
> clear as a global function is for destroying a class/struct
>
> clear as a member can do anything. clear is not a keyword.
>
> clear(container) -> same as delete container, but without freeing any
> memory.
>
> container.clear() -> remove all elements
>
> This has been brought up before as a problem, I'm not sure it's that
> terrible, but I can see why there might be confusion.
>
> -Steve
Then the answer I gave was wrong, and am curious what the correct answer is:
"Delete is not to be used with D version 2 and intended to be removed from the language. What the hold up is, I am not sure. Instead you use a function, I believe clear(), which resets your object to and empty state (frees resources that isn't GC memory). This is explained in The D Programming Language book, which I don't have handy right now."
http://stackoverflow.com/questions/4589114/when-to-delete-in-d
More information about the Digitalmars-d
mailing list