データ構造に関する質問があります。プロセスの存続期間を通じて成長する文字列のコレクションがあります。さまざまな期間でプログラムの周りにこれらの文字列への参照を渡すことができるようにしたいと思います。コレクションに重複を追加したくないので、1つを渡すと、既存のエントリへの参照が返されます。つまり、次のようになります。
const std::string& add_new_entry(const std::string&)
{
// Check if string exists
// Return reference if it does
// Otherwise add to collection
// Return reference to it
}
最も単純な実装は、文字列のリストとstd::find
毎回の呼び出しですが、特に50,000以上の文字列を扱っているので、それが非常に最適ではないと感じずにはいられません。サイズ変更や移動を強制せずに要素を任意に追加できるように拡張配列コンテナを作成し、間接参照比較述語を使用してアルファベット順std::set
に並べられた要素でインデックスを作成してstd::string*
います。15文字列の比較はたくさんのようです。