#include
#include
using namespace std;
int main()
{
string a("ABCDEFG") ;
string k="B";
auto i=a.begin(),j=a.end();
auto m=a.begin()+(j-i)/2;
while(m!=j&&*m!=k){
if(k<*m)
j=m;
else
i=m+1;
m=i+(j-i)/2;
}
if(*m==k)
cout<else
cout<<"Not founded!"<
运行结果及详细报错内容 从第10行开始报错
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60% 照着《Primer C++》写的用迭代器实现二分搜索,不知道为什么报错了几百行
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
参考如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a("ABCDEFG") ;
char k= 'B';
auto i=a.begin(),j=a.end();
auto m=a.begin()+(j-i)/2;
while(m!=j&&*m!=k){
if(k<*m)
j=m;
else
i=m+1;
m=i+(j-i)/2;
}
if(*m==k)
cout << *m << endl;
else
cout<<"Not founded!"<<endl;
return 0;
}
如有帮助,欢迎点赞+采纳哈!