The keys should be first sorted by length and then lexicographically.
Keys sorted by length and then lexicographically.
an unsigned type that can hold an index of sorted keys. U.max must be less then length of the table.
character type
static immutable sortedKeys = ["", "a", "b", "aab", "abb", "aaaaa"]; static immutable table = MirStringTable!ubyte(sortedKeys); // CTFE static assert (table[""] == 0); static assert (table["a"] == 1); static assert (table["b"] == 2); static assert (table["abb"] == 4); assert (table["aaaaa"] == 5);
import mir.utility: simpleSort; auto keys = ["aaaaa", "abb", "", "b", "a", "aab"]; // sorts keys by length and then lexicographically. keys.simpleSort!smallerStringFirst; assert(keys == ["", "a", "b", "aab", "abb", "aaaaa"]);
Fast string table used to get key's id. The keys should be first sorted by length and then lexicographically.