On Mon, May 6, 2013 at 11:26 AM,
One of the libraries I work with (libXML2) has a very useful concept called a string dictionary, and I am surprised this doesn't appear to be in either STL or Boost. Am I missing something, or is Boost missing something?
The basic idea is: Given you have a string and an instance of a dictionary, you can: 1) check if the string is already in the dictionary. 2) Add the string to the dictionary and return the dictionary entry (if the string is already present, return existing entry).
The dictionary entries contain a copy of the string. Entries may be compared for equality/inequality in O(1) time. The lifespan of the strings in the entry is managed by the entry.
This really simplifies writing parsers and the like, and is such a useful concept that I'm really surprised not to see it in STL or Boost.
Look at Boost.Flyweight. There is even an example for strings. -- François Duranleau