2 Stimmen

Grundlegende binary_search in C++ mit STL

Ich spiele gerade mit einigen STL-Algorithmen. Bei der Verwendung von binary_search komme ich nicht weiter. Ich habe das Vektorwörterbuch sortiert und führe dann binary_search aus, indem ich meine eigene Komparatorfunktion schreibe. Die Ausgabe lautet jedoch jedes Mal "nicht gefunden". Die Zeichenfolgen, nach denen ich suche, sind jedoch im Vektor vorhanden. Für jede Hilfe wäre ich dankbar.

Hier ist der Ausschnitt:

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";

2voto

Dominix Punkte 280

Ich habe die Lösung: Wenn ich mit der Zeichenkette searchStr="will" suchte \r "Das bedeutet, dass beim Lesen aus einer Datei, Zeile für Zeile in einen Vektor ein \r wird an die Zeichenkette angehängt. Hmm dummer Fehler.

0voto

Torsten Punkte 20940

Cout << "Jetzt mit Binärer Suche suchen in sortiertes Array "

sortiertes Array sind ein Schlüsselwort. Ihr String ist kein sortiertes Array. Wenn Sie String in ein sortiertes Array umwandeln, erhalten Sie einen String in alphabetischer Reihenfolge, z. B. "abbbcccddddd...".

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X