xxxInPlace or xxxCopy?
Jonathan M Davis
jmdavisProg at gmx.com
Wed Jan 19 19:12:41 PST 2011
On Wednesday 19 January 2011 18:23:14 Jerry Quinn wrote:
> Andrei Alexandrescu Wrote:
> > On 1/19/11 6:53 PM, Jonathan M Davis wrote:
> > > On Wednesday, January 19, 2011 15:33:16 Andrei Alexandrescu wrote:
> > >> I'm consolidating some routines from std.string into std.array. They
> > >> are specialized for operating on arrays, and include the likes of
> > >> insert, remove, replace.
> > >>
> > >> One question is whether operations should be performed in place or on
> > >> a
> >
> > >> copy. For example:
> > So I guess vote stays unchanged :o).
> >
> > >> Thoughts?
> > >
> > > Haven't we been using the approach that string operations generally
> > > make copies (in many cases slices) and marking functions that do it in
> > > place with InPlace?
> >
> > Problem is, even though the example uses strings, the functions apply to
> > all arrays.
>
> The big difference is operating on immutable arrays vs mutable ones. For
> immutable arrays, you have to do copies. But mutable ones allow in-place
> editing. If I'm working with mutable arrays of ints, I don't want to have
> to type InPlace after every function and I *really* don't want the array
> to be copied or efficiency will go down the tubes.
>
> Nor do I want to add Copy to every string operation. This might be an
> argument to leave the string functions where they are. To a certain
> extent, strings are special, even though they really aren't.
>
> Is it too ugly to contemplate algorithms doing in-place operations on
> mutable arrays and return a copy instead for immutable ones?
I'd say that yes, it's too ugly to contemplate. The reason is simple: the
behavior of the function then changes drastically depending on whether the array
you give it is immutable or not.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list