Boost logo

Boost :

From: Joaquín Mª López Muñoz (joaquin_at_[hidden])
Date: 2003-12-18 15:11:04


I've just uploaded release 8 of my indexed_set library at

and also to the sandbox, for those who use this rather than
the files section.

I hereby request to be admitted into the formal review queue.
The package complies, to the best of my knowledge, with
overall requirements about structure, documentation and
testing suite. Several examples are provided as well.

Much of the shaping of the library has gone on in private,
with the invaluable help of Pavel Vozenilek, who has spent
the last three and a half months testing and proofreading the
material. I'd like to publicly thank him for the effort.

For those who don't know about this library:

The Boost.IndexedSet library provides a class template named
indexed_set which enables the construction of set-like containers
maintaining one or more indices according to given comparison
criteria. Briefly put, one can picture an indexed_set as
a composite bundle of (multi)sets over the same collection of
elements, which is reminiscent to the way indexes of a relational
database behave.

Standard uses of indexed_set are aimed to solving the frequent
problem of having a bunch of elements which must be looked-up
in different orders. The usual and ugly way to implement this is to
maintain several std::sets in sync pointing to the same colection
of objects.

Additional features of the indexed_set class template:

* Indices can be tagged (i.e. accessed through mnemonic types).
* Sorting is accomplished through the combination of a key
  extractor and a comparison predicate. This design stems from
  early suggestions here at the mailing list and largely avoids the
  need to write hand-made comparison predicates.
* Extensive familiy of class template utilities for key extraction
  based on a data member or a memfun of the element.
* Lookup (find, lower_bound, etc.) is overloaded to perform
  subobject searching, i.e. searching where the key does not have
  to be an entire object (classical problem with std::sets where you
  have to construct a whole dummy object to search for just one
  its data members.)
* Range searching simplifying the query of intervals of the type
  "x is <=100 and > 200".
* Facilities to perform in-place updating of elements (not found in
  STL containers.) (Fernando Cacciola helped design the modify()
  memfun, thx.)
* safe mode (a la STLport safe mode): runtime detection of invalid
  iterators and so on.

The library is stable and compiles with:

* gcc 3.2 (Cygwin)
* MSVC++ 6.5/7.1
* Intel C++ 7.0/7.1
* MSVC++ 6.5 + STLport 4.5.3

Change pace has been very frequent so far. From now on I plan
to space new revisions so as to give boosters a chance to take
a look at more or less stable material.

Thank you for your attention

Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo

Boost list run by bdawes at, gregod at, cpdaniel at, john at