2

我只是在玩一些 STL 算法。在使用 binary_search 时,我被卡住了。我已经对向量字典进行了排序,然后我通过编写自己的比较器函数来运行 binary_search。但是,每次打印的输出都是“未找到”。但是,我搜索的字符串在向量中。任何帮助,将不胜感激。

这是片段:

bool ownComparator(const string &a, const string &b){
   return lexicographical_compare(a.begin(),a.end(),b.begin(),b.end());

}
...
...
cout<<"Now using Binary Search to search in sorted array"<<endl;
string searchStr="will";
bool b = binary_search(dictionary.begin(),dictionary.end(),searchStr, ownComparator);
if(b) cout<<"Found";
else cout<<"Not Found";
4

2 回答 2

2

得到了解决方案:当我用字符串搜索时 searchStr="will\r"; 它说发现这意味着在从文件中读取时,将逐行添加到向量中,将 \r 附加到字符串中。嗯,愚蠢的错误。

于 2012-08-02T12:43:13.390 回答
0

cout << "现在使用二分搜索在排序数组中搜索"

排序数组是关键字。您的字符串不是排序数组。如果将字符串转换为排序数组,则会得到按字母顺序排列的字符串,例如“abbbcccddddd ...”。

于 2012-08-02T12:59:31.787 回答