プログラムはベクトルでバイナリ検索する必要があります。最後に、見つかった要素を出力します。私のコードは次のようになります!演算子 "!="(C++イテレータ)には一致しません
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<string> s{"a","b","c"};
auto beg=s.begin(), end=s.end(), mid=s.begin()+(end-beg)/2;
auto sought='c';
while(*mid!=sought && mid!=end)
{
if(*mid>sought)
end=mid;
else
beg=mid+1;
mid=beg+(end-beg)/2;
}
cout<<(*mid)<<endl;
return 0;
}
それはエラーがその演算子であることを述べている=(!!*半ば= & &半ば=エンドを求めた)で一致していません。私がベクトルの代わりに単純な文字列でそれをしようとすると動作します。
ところで、あなたの条件は '&&'の左の '半ば= end'を持っている必要があります。
かへ! – Slava
いつものように:「using namespace std」は使わないでください。 [ここを参照してください](https://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice) – klutt
あなたはstd :: lower_boundを知っていますか? –