我有一个矢量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)
但它并不确切.有人可以告诉我为什么吗?
您的方法应如下所示:
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) 归档时间: |
|
查看次数: |
796 次 |
最近记录: |