
On 2013/4/23 20:59, Antony Polukhin wrote:
2013/4/23 Hardy
: "A good addition to proposal will be some sketch of trie interface: methods and constructors that Trie class will contain." Could you give me some examples or more advices on that? What I think out now are something like STL set, map, and with some specific methods and variables of Trie.
You are right, it is better to be as close to STL interface as possible. You may also say something like:
" Trie interface will have all the typedefs and methods of std::set excluding: iterator insert (const_iterator position, const value_type& val); ... It will additionally have the following methods:
pair
prefix_range (const value_type& prefix) const; - returns range of elements starting from `prefix`. ... " You may also add some notes that you think will be interesting or just affect design, like "trie implementation will be storing it's size as a separate field to allow getting size in constant time" or "won't be storing it's size leading to liner complexity of size() function"... Some more examples of containers features: http://www.boost.org/doc/libs/1_53_0/doc/html/container/other_features.html -- Best regards, Antony Polukhin
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Hi, the following is what I conceive of Trie, which I will put to the
'description of work' in my proposal, because of its unmaturity, I will
be happy to discuss on it with you, please give me some advice on it so
that I can finish it and submit my application on the GSOC site.
Thank you very much.
==description==
Trie(Radix Tree) is an efficient in memory data structure to deal with
string storing and searching. It can be used in many applications, and
in comparison to hashtables, it has better expandability and stability.
It is a data structure of great importance and wide usage.
C++ has already had powerful common key-value containers such as set and
map(I will only use map to make the comparison later), but when the keys
are strings, map will take O(logN * length(string)) to lookup a key
which has a worse performance when handling long strings and large
amount of data, and stores every key as a full string which also wastes
space. Besides, it is hard to use map traverse some keys with common
prefix.
Trie is good at handling strings especially the above tasks, so it is
needed to improve the performance of handling key-value storage with the
type of key being string.
The basic interface of Trie will have similar typedefs and methods to
stl::map, with some differences:
pair