在vector <string> cocos2d-x中找到一个单词

Mr *_* Vy 0 c++ cocos2d-x

我有一个矢量word_list,我想在word_list中找到一个单词.我用的是功能

bool Mylayer::existWord(vector<string> word_list, string word)
{ 
    if (std::lower_bound(word_list.begin(), word_list.end(), word) != word_list.end())
    {
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

但它并不确切.有人可以告诉我为什么吗?

Jar*_*d42 7

  • 您的方法应如下所示:

    bool Mylayer::existWord(
        const std::vector<std::string>& words,
        const std::string& word) const
    { 
        return std::find(words.begin(), words.end(), word) != words.end();
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果您vector的排序,您可以使用std::binary_search:

    bool Mylayer::existWord(
        const std::vector<std::string>& words,
        const std::string& word) const
    { 
        assert(std::is_sorted(words.begin(), words.end())); // debug check
        return std::binary_search(words.begin(), words.end(), word);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果您的集合没有重复排序,您可以使用a std::set<std::string> ,您的方法变为:

    bool Mylayer::existWord(
        const std::set<std::string>& words,
        const std::string& word) const
    { 
        return words.count(word) != 0;
    }
    
    Run Code Online (Sandbox Code Playgroud)