0

ファイルからいくつかの文字列を読み取りましたが、すでに処理した文字列を無視する必要があります。最初に私の考えは、vector<std::string>文字列を格納する場所を作成し、新しい文字列を受け取った後、それがすでにベクターにあるかどうかを確認することでした。しかし、私はちょうどを使用して同じことを行うことができますがstd::string、それはより高速でより少ないメモリを使用すると思いますが、この方法はベクトルを使用する場合ほど明白ではありません。どちらのアプローチが良いですか?

4

1 に答える 1

2

より良い解決策は、読んだ文字列をに保存することですstd::set<string>

vectorC ++標準ライブラリのセットはバイナリツリーとして編成されているため、セットのルックアップは一般に、のルックアップよりも高速です。すべての文字列を1つの長い文字列に入れると、検索は線形のままになり、解決すべきもう1つの問題があります。それは単語のエイリアシングの処理です。"abc"+"xyz"とを区別できないため、区切り文字がないと、文字列をそのまま連結することはできません。"abcxyz"

于 2012-12-09T20:48:16.150 に答える