一般的な文字列を格納して検索できる必要があります。文字列の内容についてはよくわかりません.2/3より少し多いのは人間の言葉で、残りはUUIDまたは数字/文字の組み合わせに近いものです. 特定のグループ化は一定であることを知っています(つまり、人間の言葉が含まれている場合はすべて人間の言葉になり、UUID が含まれている場合はすべてのコンテンツが UUID になります)。
最高の平均検索率を得るために、このデータをマップまたはハッシュマップのどちらに配置するかを決定する必要があります。入力形式についてほとんど知らない場合、文字列の適切で効率的なハッシュを作成できるとは思わないため、O(log n) ランタイムでマップすると言う傾向があります。どちらが良いかについての考えはありますか?
編集:重要な側面を1つ忘れていました。文字列の長さがわからないので、長い文字列ではメモリ使用量が大きくなりすぎるのではないかと心配しています。ハッシュ方式を使用した場合、X 文字の後にハッシュが文字単位でハッシュされないような処理を行って、メモリの消費量が膨大になるのを回避します。
私が本当に欲しいのは、バケットの(ログN)検索を提供できるように、順序付けられた方法でソートされた「バケット」に複数の値を保持するハッシュマップの実装です。しかし、それはstardrd C++には存在しないと思いますし、ゼロから書く価値はありません。
pps。データはほぼ静的です。たまにリストに追加する必要がありますが、それはまれであり、書き込み時間が遅いことを喜んで受け入れます。私は検索時間だけを気にします。