Container insertion and removal

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sat Mar 6 04:49:18 PST 2010


In the STL world, writing container-independent code is generally 
shunned (see e.g. 
http://www.informit.com/content/images/0201749629/items/item2-2.pdf).

One problem is a very small intersection between the functionalities 
offered by the various STL containers, and the conceptual organization 
that is weaker than that of iterators.

A worse problem is iterator invalidation rules, something that we'll 
need to address too. I'm thinking that the best defense is a strong 
offense, and I plan to define the following naming convention:

Methods such as insert, remove, pushFront, pushBack, removeFront, 
removeBack, are assumed to affect the container's topology and must be 
handled in user code as such.

In addition to those, a container may also define functions named after 
the above by adding a "soft" prefix (e.g. softInsert, softRemove...) 
that are guaranteed to not affect the ranges currently iterating the 
container.

Generic code that needs specific iterator (non-)invalidation rules can 
use softXxx methods, in confidence that containers not supporting it 
will be ruled out during compilations.

Sounds good?


Andrei



More information about the Digitalmars-d mailing list