Feature suggestion: in-place append to array

Mike S mikes at notarealaddresslololololol.com
Wed Mar 31 14:57:07 PDT 2010


Steven Schveighoffer wrote:
> 
> You are correct, setCapacity ensures that *at least* the given number of 
> elements will be available for appending.
> 
> I planned on making the function a property (but a bug would not allow 
> that), the original intended usage was:
> 
> a.capacity = 10000;
> 
> Reserve doesn't work in this context.  Can you come up with a name that 
> does?
> 
> I'll bring up reserve (as a function) as an alternative on the phobos 
> mailing list, and see what people say.  I kind of liked the 
> setter/getter idea, but you make a good point.
> 
> -Steve

Sorry if resurrecting this thread is against netiquette, but it caught 
my eye, and this is my first newsgroup post in years. ;)

Anyway, is there any compelling reason why setCapacity or modifying 
a.capacity should allocate a nondeterministic amount of storage?

Depending on the application, programmers might require strict control 
over memory allocation patterns and strict accounting for allocated 
memory.  Game programmers, especially console game programmers, tend to 
strongly prefer deterministic allocation patterns, and nondeterminism is 
one of the [several] common complaints about the C++ STL 
(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html is a 
good resource on these kind of issues).  In the case of D (which I'm 
considering learning), this is especially important for dynamic arrays, 
partly because they're so useful by themselves, and partly because they 
may form the backbone of custom containers.

Whereas it's easy to add "smart nondeterministic" behavior to a 
deterministic setCapacity function by providing a wrapper, ordinary 
language users can't do the opposite.  Because of this, and because 
dynamic arrays are so central to the D language, a nondeterministic 
setCapacity function may deter game programmers, especially console 
programmers, from adopting D.

Assuming you see this post, what are your thoughts here?



More information about the Digitalmars-d mailing list