Container insertion and removal
Michel Fortin
michel.fortin at michelf.com
Mon Mar 8 10:30:27 PST 2010
On 2010-03-08 13:01:32 -0500, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> said:
> softXxx functions that remove data should guarantee that existing
> ranges not including the removed elements will continue to operate on
> the range without seeing the removed elements. There is no guarantee
> that soft removal offers for ranges spanning the removed elements. (I'm
> unclear on this last topic.)
That won't work for a vector as ranges that are further then the
removed element need adjustment too.
Just an idea, perhaps remove and other mutator functions for the
container could take a list of range to update at the same time they do
the operation. This way you don't even need a soft function, if remove
can't accept other ranges then it won't take other ranges as an
argument. For instance:
class Container {
void remove(Range toRemove, Range[] needAdjustment);
}
Container x = new Conatiner();
auto a = x[];
auto b = x[4..6];
auto c = x[2..4];
x.remove(c, [a, b]); // remove elements from c, adjust ranges a and b.
OtherContainer y = new OtherContainer();
auto d = y[];
auto e = y[2..4];
y.remove(e, [d]); // error, container is unable to adjust other ranges.
--
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/
More information about the Digitalmars-d
mailing list