Project proposal: Associative containers with strong guarantees

The Standard Template Library (STL) is a collection of generic algo- rithms and data structures that is part of the standard run-time environment of the C++ programming language. The STL provides four kinds of associative elem- ent containers: set, multiset, map, and multimap. In this project the goal is to develop an associative container that is safer, more reliable, more usable, and/or more efficient (with respect to time and space) than any of the existing realizations. Problem formulation Let U be a universe of elements which can be compared. Elements of U can be singletons or pairs, each consisting of a key and some satellite information associated with that key. A data structure D that stores a collection of elements drawn from U and supports efficient insert, delete, and search operations is called an ordered dictionary. The collection stored may or may not contain duplicates. In an abstract setting, D maintains a changing collection of elements in sorted order. Ordered dictionaries are a central piece of any programmer's toolbox, and are provided as a facility in a number of high-level programming languages. In C++ terminology (5, Clause 23), an ordered dictionary is called an associative container. Each realization of the C++ standard library should provide four kinds of associative containers: set (elements singletons, no duplicates), map (elements pairs, no duplicates, ordering based on keys), multiset (elements singletons, duplicates allowed), and multimap (elements pairs, duplicates allowed, ordering based on keys). In the design of the C++ standard library, the main reason to support these four different dictionary variants is to allow a direct modification of satellite data, instead of forcing users to invoke a delete followed by an insert to make such an update. This feature is frequently employed in practical applications. There are many data structures that could be used in the realization of associative containers; almost any elementary textbook on data structures offers one. Most relevant alternatives are based on balanced search trees; hash tables cannot be used because of the element ordering. Most publicly

[1]  Mark Allen Weiss,et al.  Data structures and problem solving using Java , 1997, SIGA.

[2]  J. Ian Munro,et al.  Deterministic skip lists , 1992, SODA '92.

[3]  Rudolf Fleischer A Simple Balanced Search Tree with O(1) Worst-Case Update Time , 1993, ISAAC.

[4]  Arne Andersson,et al.  Balanced Search Trees Made Simple , 1993, WADS.

[5]  Leonidas J. Guibas,et al.  A new representation for linear lists , 1977, STOC '77.

[6]  Alexander A. Stepanov,et al.  C++ Standard Template Library , 2000 .

[7]  David Maier,et al.  Hysterical B-trees , 1981, Inf. Process. Lett..

[8]  Jyrki Katajainen,et al.  Making operations on standard-library containers strongly exception safe , 2007 .

[9]  Sartaj Sahni,et al.  A New Weight Balanced Binary Search Tree , 2000, Int. J. Found. Comput. Sci..

[10]  Edward M. Reingold,et al.  Binary search trees of bounded balance , 1972, SIAM J. Comput..

[11]  Henrietta Hardy Mrs Hammond The complete guide , 1883 .

[12]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[13]  Arne Andersson Optimal Bounds on the Dictionary Problem , 1989, Optimal Algorithms.

[14]  Clifford Stein,et al.  Introduction to Algorithms, 2nd edition. , 2001 .

[15]  Kurt Mehlhorn,et al.  Sorting and Searching , 1984 .

[16]  Mark H. Overmars,et al.  A balanced search tree with O(1) worst-case update time , 1988, Acta Informatica.

[17]  Douglas Gregor,et al.  C++ Templates: The Complete Guide , 2002 .

[18]  M. AdelsonVelskii,et al.  AN ALGORITHM FOR THE ORGANIZATION OF INFORMATION , 1963 .

[19]  Salvador Roura,et al.  A New Method for Balancing Binary Search Trees , 2001, ICALP.

[20]  Pat Morin,et al.  Putting your data structure on a diet , 2007 .

[21]  Bjarne Stroustrup,et al.  The C++ Programming Language: Special Edition , 2000 .

[22]  Rudolf Fleischer A Simple Balanced Search Tree with O(1) Worst-Case Update Time , 1996, Int. J. Found. Comput. Sci..

[23]  Hermann A. Maurer,et al.  Implementing Dictionaries Using Binary Trees of Very Small Height , 1976, Inf. Process. Lett..

[24]  Kurt Mehlhorn,et al.  A new data structure for representing sorted lists , 1980, Acta Informatica.

[25]  Richard Cole,et al.  Exponential Structures for Efficient Cache-Oblivious Algorithms , 2002, ICALP.