int main(int argc, char** argv) {
set<string> s;
s.insert("hi");
set<string>::iterator it = s.find("hi");
if (it == s.end()) {
cout << "Matched." << endl;
} else {
cout << "Not matched." << endl;
}
return 0;
}
Die Ausgabe sagt Nicht übereinstimmend.Speichern von C++ - Zeichenfolgen in AWL-Satz
Ich möchte eine Reihe von eindeutigen Zeichenfolgen speichern. Aber die find() im Set findet die Strings, die ich bereits eingefügt habe, nicht. Funktioniert das default less comparator Objekt nicht für Strings? Wenn nicht, wie ordne ich dann das richtige Vergleicherobjekt für Strings zu?
Anstelle von if (it == send()) verwende if (it! = S.end()), da die Suche einen Iterator an das erste Element in dem Bereich liefert, der val vergleicht ("hi"), wenn keine Elemente übereinstimmen, gibt die Funktion die letzte (s.end()) zurück. –
Übrigens, wenn Sie nur überprüfen müssen, ob ein Element vorhanden ist, ist die 'count' Methode viel weniger ausführlich. –