大学時代のお気に入りのデータ構造の 1 つはTrieでした。プレフィックスが共有されている場合、大量の文字列セットを保持するための優れたデータ構造です。セット内の文字列の数に関係なく、文字列の O(|length|) で検索が行われるため、ルックアップも優れています。
比較すると、バランスの取れたツリーは、セット項目の数に O(log N) と、比較のために支払う金額を加えたものになります。ハッシュテーブルには、ハッシュ計算、比較などが含まれます。
したがって、ほとんどの言語の標準ライブラリに Trie の実装がないことは、私にとって驚くべきことです。
私が思いついた唯一の理由は、メモリアクセスコストが高すぎる可能性があるということでした. ツリー ルックアップを実行する場合に O(log N) の場所を調査するのではなく、O(|length|) の異なる場所を実行していないため、すべての結果が得られます。文字列が長い場合、これはやりすぎになる可能性があります。
だから私は疑問に思っています:私が今説明した懸念はいくらですか?文字列の大規模なセットまたはマップを格納する必要がある場合はどうしますか?