一、问题的提出
最近在B站学习C++中的STL常用查找算法,常用的有find(), find_if(), adjacnet_find()和binary_search()。重点记录一下使用binary_search()的问题。
在视频中,老师给了一个例子是对于一个升序序列,利用二分查找binary_search()查找某一个数是否存在。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void test01()
{
vector<int> v;
for (int i = 0; i < 10 ; i++)
{
v.push_back(i);
}
//查找元素 9 在容器 v 中是否存在
bool ret = binary_search(v.begin(), v.end(), 9);
if (ret)
{
cout << "找到了元素" << endl;
}
else
{
cout << "未找到" << endl;
}
}
int main()
{
test01();
return 0;
}
在弹幕中,有同学提出了“如果v是个降序序列,会输出‘未找到’”的问题。在vs2019下测试,确实存在上述问题:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;