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 に答える