我有一个矢量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;
}
但它找不到确切的结果。有人可以告诉我为什么吗?
答案 0 :(得分: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();
}
如果您的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);
}
如果您的收藏品没有重复排序,您可以使用std::set<std::string>
你的方法变成了:
bool Mylayer::existWord(
const std::set<std::string>& words,
const std::string& word) const
{
return words.count(word) != 0;
}
答案 1 :(得分:-1)
您可以尝试使用find
ideone链接:http://ideone.com/bgFZwU
bool existWord(vector<string> word_list, string word) {
vector<string>:: iterator it;
it= find(word_list.begin(), word_list.end(), word);
if(it== word_list.end()) {
return 0;
} else {
return 1;
}
}