C++在列表<word>中查找一个句子

abl*_*blm 2 c++ boost std

我正试图找到一种优雅的方式来找到一些文本ex."hello world"从句子"I compiled my first hello world. It works!"

但这句话std::list<word>带有一些元数据.

Class Word
{
  std::string m_word;
  Location ... (X,Y in a picture)
  ....
}
Run Code Online (Sandbox Code Playgroud)

只是想知道是否有一些很好的方法来做一些std或boost函数而不是我的2个丑陋的循环.谢谢!

Nik*_* B. 5

您可以std::search与仅比较m_word成员的自定义谓词一起使用:

bool wordsEqual(const Word& a, const Word& b) {
    return a.getWord() == b.getWord();
}

// ...
Word needle[] = { "hello", "world" };
list<Word>::iterator it = search(lst.begin(), lst.end(),
                                 needle, needle + 2,
                                 wordsEqual);
Run Code Online (Sandbox Code Playgroud)

此代码假定数组初始化的getWord方法和构造Word(const char*)函数.