Dynamic arrays in D 1.0

Walter Bright newshound1 at digitalmars.com
Sun May 11 14:57:24 PDT 2008


Edward Diener wrote:
> In D 1.0 dynamic arrays are the equivalent of C++'s std::vector<T>, with 
> slicing replacing iterators in order to access some subrange of the 
> sequence. In C++ there is functionality in std::vector::erase for 
> erasing elements from the vector and std::vector::insert for inserting 
> new elements into the vector. Where is that functionality in D's dynamic 
> arrays ?

The D string library is oriented more towards COW (copy-on-write) 
operations rather than in-place modification. Hence, things are biased 
towards slicing and concatenating strings.

> Furthermore in D 1.0 a char[], a dynamic array of characters, is the 
> equivalent of the C++ std::string. In the C++ std::string class there is 
> a rich set of functionality for manipulating the char elements in the 
> string, for finding particular elements in the string,

std.string.find() for basic searches, std.regexp for more advanced ones.

> and for comparing 
> the character elements in strings with other strings,

== works for array contents, too

> but I see little 
> of this in dynamic array functionality. What am I missing ?

Can you be a bit more specific about what operation(s) you want to do?

> I am guessing this must be provided in D libraries of functions ( Phobos 
> ? Tango ? ) templated on the dynamic array type. But, if so, this seems 
> a poor way of providing dynamic array functionality as compared to 
> built-in dynamic array functionality in order to provide the sort of 
> functionality mentioned above, especially as D's dynamic arrays are part 
> of the D language as opposed to a separate library like C++'s 
> std::vector<T> and std::string.

I don't really understand your point. It sounds like you're suggesting 
that, by analogy, all floating point operations should be core language 
operations since floating point arithmetic is.



More information about the Digitalmars-d mailing list