Boost.MultiIndex Acknowledgements 鳴謝Fernando Cacciola, Darren Cook, Beman Dawes, Jeremy Maitin-Shepard and Daryle Walker from the Boost mailing list provided useful suggestions for improvement on the first alpha releases of the library. Gang Wang discovered several bugs in the code. Thomas Wenisch brought out the idea of "sequence sets" from which sequenced indices were designed. Giovanni Bajo, Chris Little and Maxim Yegorushkin tested the library on several platforms. Daniel Wallin contributed fixes for MSVC++ 7.0. Ron Liechty and the support staff at Metrowerks provided assistance during the porting of the library to CW 8.3. Porting to VisualAge 6.0 counted on Toon Knapen's help. Markus Schopflin aided with Compaq C++ 6.5 and GCC for Tru64 UNIX. Rosa Bernardez proofread the last versions of the tutorial.
Pavel Voženilek has been immensely helpful in thoroughly reviewing every single bit of the library, and he also suggested several extra functionalities, most notably range querying, safe mode, polymorphic key extractors and MPL support. Thank you!
The Boost acceptance review took place between March 20th and 30th 2004. Pavel Voženilek was the review manager. Thanks to all the people who participated and specially to those who submitted reviews: Fredrik Blomqvist, Tom Brinkman, Paul A Bristow, Darren Cook, Jeff Garland, David B. Held, Brian McNamara, Gary Powell, Rob Stewart, Arkadiy Vertleyb, Jorg Walter. Other Boost members also contributed ideas, particularly in connection with the library's naming scheme: Pavol Droba, Dave Gomboc, Jeremy Maitin-Shepard, Thorsten Ottosen, Matthew Vogt, Daryle Walker. My apologies if I inadvertently left somebody out of this list.
Boost.MultiIndex could not have been written without Aleksey Gurtovoy et al. superb Boost MPL Library. Also, Aleksey's techniques for dealing with ETI-related problems in MSVC++ 6.0 helped solve some internal issues of the library.
The internal implementation of red-black trees is based on that of SGI STL stl_tree.h file:
Copyright (c) 1996,1997 Silicon Graphics Computer Systems, Inc.
Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Silicon Graphics makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.
Copyright (c) 1994 Hewlett-Packard Company
Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Hewlett-Packard Company makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.
I would like to dedicate this piece of work to Rosa Bernardez, my very first
C++ teacher, for her unconditional support in many endeavors of which programming is
by no means the most important. In memory of my cat Lopez (2001-2003): he
lived too fast, died too young.
Many thanks again to Pavel Voženilek, who has carefully reviewed the new material and suggested many improvements. The design of hashed indices has benefited from discussions with several Boost members, most notably Howard Hinnant and Daniel James. Daniel has also contributed Boost.Hash to the community: hashed indices depend on this library as their default hash function provider. Robert Ramey's Boost Serialization Library provides the very solid framework upon which Boost.MultiIndex serialization capabilities are built. Toon Knapen helped adjust the library for VisualAge 6.0. Markus Schopflin provided a Jamfile tweak for GCC under Tru64 UNIX.
Thanks go to Pavel Voženilek for his useful comments and suggestions
during the development of this release, and to Rosa Bernardez for reviewing
the new material in the documentation.
Alo Sarv suggested a notational improvement in the specification of
partial searches with composite keys.
Maxim Yegorushkin proposed a valuable
spatial optimization
for ordered indices and provided figures of its impact on performance
for containers with large numbers of elements.
Caleb Epstein performed the tests under MSVC++ 8.0 described in the
performance section. The following people have reported bugs and problems with
previous versions and prereleases of the library: Alexei Alexandrov,
Matias Capeletto, John Eddy, Martin Eigel, Guillaume Lazzara,
Felipe Magno de Almeida, Julien Perville, Hubert Schmid, Toby Smith.
New member in the family! Thanks to Hector for his patience during
long development sessions and his occasional contributions to the source
codebase.
global_fun
was included after a proposal by Markus Werle. Bruno Martinez Aguerre
suggested the inclusion of
iterator_to. The
rollback versions of modify and modify_key arose
from discussions with Matias Capeletto. Steven Watanabe spotted an
include guard bug present from the first release of the library.
Thanks to Amit Jain for reporting a problem with allocator management.
Michael Fawcett proposed the addition of an allocator constructor to
multi_index_container.
A report from Zachary Zhou has led to
enhancing the behavior of
hashed indices update functions so that they meet some intuitive expectations.
Grzegorz Jakacki spotted some internal dead code.
Revised June 25th 2008
c Copyright 2003-2008 Joaquin M Lopez Munoz. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)