Boost logo

Boost :

Subject: Re: [boost] [Containers Library Review] The review of the Containers library by Ion Gaztanaga starts today
From: Edward Diener (eldiener_at_[hidden])
Date: 2011-08-16 23:12:05


On 8/3/2011 6:53 AM, John Maddock wrote:
> The review of the containers library by Ion Gaztanaga starts today, to
> summarize the library:
>
> "Boost.Container library implements several well-known containers,
> including STL containers. The aim of the library is to offers advanced
> features not present in standard containers or to offer the latest
> standard draft features for compilers that comply with C++03.
>
> In short, what does Boost.Container offer?
>
> * Move semantics are implemented, including move emulation for pre-C++0x
> compilers.
> * New advanced features (e.g. placement insertion, recursive containers)
> are present.
> * Containers support stateful allocators and are compatible with
> Boost.Interprocess (they can be safely placed in shared memory).
> *
>
> The library offers new useful containers:
> o flat_map, flat_set, flat_multiset and flat_multiset: drop-in
> replacements for standard associative containers but more memory
> friendly and with faster searches.
> o stable_vector: a std::list and std::vector hybrid with random-access
> iterators that offers iterator stability in insertions and erasures.
> o slist: the classic pre-standard singly linked list container."
>
> Documentation from the library may be viewed online here:
> file:///M:/data/boost/sandbox/move/libs/container/doc/html/index.html
>
> The source may be accessed from the "move" directory of the sandbox SVN
> or downloaded from
> http://www.drivehq.com/web/igaztanaga/boost_container.zip. Note that
> this download contains a copy of the accepted, but not yet release,
> Boost.Move library - extract the zip over a copy of Boost-1.47 to get a
> full working copy.

This is a very late review of the Containers library. My review is based
on reading the documentation rather than trying the library.

First off I vote that the library should be accepted into Boost.

>
> Review comments might like to answer the following questions:
>
> * What is your evaluation of the design?

The design is straightforward.

> * What is your evaluation of the implementation?

Did not look at the implementation.

> * What is your evaluation of the documentation?

I think the documentation is good, but it is hard to find overviews of
the separate containers. They are buried in the reference whereas I
would like to see them as separate topics in the TOC.

For the example in the "Emplace: Placement insertion" topic there is a
'non_copy_movable ncm;' in the main function but it is never used, which
is confusing. I did get the idea of emplacement from the example and
understand what it is.

There is mention in the Introduction that "Containers support stateful
allocators" but that appears to be all that is written about that topic.
I would like to know what that is about.

The "Recursive Containers" topic gives a nice example but does not
explain what a recursive container entails and why a recursive container
is not guaranteed by the standard. Some further information should be
given in this topic.

For all of the containers which have the same names as the std::
containers, it should be pointed out what their benefits are. if it is
a matter of all those containers having move semantics, placement
insertion, recursive containers, and stateful allocators, that should be
mentioned. One would like to know why one should use the Containers
library containers rather than the std:: containers without having to
read the description of each container.

> * What is your evaluation of the potential usefulness of the library?

The new containers are definitely useful. The containers which have the
same names as the std:: containers need to make a case for their
usefulness better than they currently do in the doc.

> * Did you try to use the library? With what compiler? Did you have any
> problems?

No, I did not try it. My trust in Ion Gaztanaga's programming from his
other work in Boost is pretty high. I will try out various containers
when I have the chance to experiment with them.

> * How much effort did you put into your evaluation? A glance? A quick
> reading? In-depth study?

A moderate reading of the doc.

> * Are you knowledgeable about the problem domain?

Yes. I have used and programmed some C++ like conatiners in various
programming environments, even when I was not using C++, and consider
the C++ standard library conatainers, iterators, algorithms superior to
any other similar library in other languages I use ( Python, C++/CLI and
C# .Net, Java ).

>
> And finally, every review should answer this question:
>
> * Do you think the library should be accepted as a Boost library? Be
> sure to say this explicitly so that your other comments don't obscure
> your overall opinion.

Answered already. The library should be accepted into Boost. The new
containers are very useful. I apologize for the late review and the fact
that I did not get a chance to really use the library, but I will do so
when I am not as busy as I have been on other programming chores.

Eddie Diener


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk