检查String是否包含字典文件中的单词的快速方法?

jma*_*erx 3 c++ algorithm

说我有一个文字文件:

  • 苹果
  • 培根
  • 电话
  • 等等,大约有2000个单词.

然后我有一个字符串:

I was eating some Apple-bacon when the phoNe rang.
Run Code Online (Sandbox Code Playgroud)

我正试图找到一种快速的方法:

I was eating some *****-***** when the ***** rang.
Run Code Online (Sandbox Code Playgroud)

我基本上试图审查一个聊天框.我只是想知道是否有比迭代矢量更好的方法.我只使用标准库,因此不可能使用boost hashmap.

我正在使用C++ 98.

Fre*_*Foo 6

我只是想知道是否有比迭代矢量更好的方法.

binary_search在排序向量上使用或std::set保证O(lg n)查找时间.lg(2000)= 7.6,理论上速度提高263倍,无论任何常数因素.

(虽然这真的更适合正则表达式.)