copy and array length vs capacity. (Doc suggestion?)
    Jon D via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Sat Nov 21 19:19:54 PST 2015
    
    
  
On Sunday, 22 November 2015 at 00:31:53 UTC, Jonathan M Davis 
wrote:
>
> Honestly, arrays suck as output ranges. They don't get appended 
> to; they get filled, and for better or worse, the documentation 
> for copy is probably assuming that you know that. If you want 
> your array to be appended to when using it as an output range, 
> then you need to use std.array.Appender.
>
Hi Jonathan, thanks for the reply and the info about 
std.array.Appender. I was actually using copy to fill an array, 
not append. However, I also wanted to preallocate the space. And, 
since I'm mainly trying to understand the language, I was also 
trying to figure out the difference between these two forms of 
creating a dynamic array with an initial size:
    auto x = new int[](n);
    int[] y;  y.reserve(n);
The obvious difference is that first initializes n values, the 
second form does not. I'm still unclear if there are other 
material differences, or when one might be preferred over the 
other :) It's was in this context the behavior of copy surprised 
me, that it wouldn't operate on the second form without first 
filling in the elements. If this seems unclear, I can provide a 
slightly longer sample showing what I was doing.
--Jon
    
    
More information about the Digitalmars-d-learn
mailing list