The CPH STL is a special edition of the STL, the containers and
algorithms part of the C++ standard library. The
specification of the generic components of the STL is given in the
C++ standard. Any implementation of the STL, e.g. the one
that ships with your standard-compliant C++ compiler, should
provide at least one realization for each container that has the
specified characteristics with respect to performance and safety. In
the CPH STL project, our goal is to provide several alternative
realizations for each STL container. For example, for associative
containers we can provide almost any kind of balanced search tree.
Also, we do provide safe and compact versions of each container. To
ease the maintenance of this large collection of implementations, we
have developed component frameworks for the STL containers. In this
paper, we describe the design and implementation of a component
framework for vector, which is undoubtedly the most used
container of the C++ standard library. In particular, we
specify the details of a vector implementation that is safe
with respect to referential integrity and strong exception safety.
Additionally, we report the experiences and lessons learnt from the
development of component frameworks which we hope to be of benefit to
persons engaged in the design and implementation of generic software
libraries. |