Um die Vektor- und Algorithmusbibliotheken zu verwenden, sollte das C ++ - Programm mit:
#enthaltenDieses Tutorial gibt die Grundlagen, einen Wert in einem C ++ - Vektor zu finden. Der gesamte Code in diesem Tutorial befindet sich in der Funktion main (), sofern nicht anders angegeben. Wenn der Vektor aus Zeichenfolgen besteht, verwenden Sie die String -Klasse. und verwenden Sie nicht "const char*". In diesem Fall muss auch die String -Klasse einbezogen werden, wie so:
#enthaltenArtikelinhalt
Finden
InputIterator Find (InputIterator zuerst, InputIterator Last, const t & value);
Der folgende Code verwendet diese Funktion, um zu wissen, ob die Blume „Maisblume“ zu einer Vektorliste von Blumen gehört:
#enthaltenDie Ausgabe ist:
Blume bei Index gefunden: 5Die gesamte Liste des Vektors war das Ziel für den Befund. Aus der Syntax der Find () -Funktion ist „First“ VTR.begin () im Code und "letztes" ist VTR.end () im Code. Der Wert, nach dem aus der Find () -Funktionssyntax, die mit Const-T & -wert bezeichnet wird.
Die Funktion find () scannt die Vektorliste von Anfang an. Wenn es nicht den Wert sieht, den es sucht, erreicht es das Ende des Vektors. Das Ende des Vektors ist offiziell vtr.End (), was gerade über das letzte Element liegt. Wenn es nicht den Wert sieht, den es sucht, gibt es den Iterator zurück, der auf VTR zeigt.Ende().
Der Wert, den es sucht, kann an verschiedenen Stellen im selben Vektor liegen. Wenn es den ersten der gesuchten Werte sieht, stoppt es dort und gibt den Iterator zurück, der auf diesen Wert hinweist.
Jeder Wert in einem Vektor hat einen Index. Der erste Wert hat Index 0, der VTR entspricht.Start(). Der zweite Wert hat Index 1, der VTR entspricht.begin () + 1. Der dritte Wert hat Index 2, der VTR entspricht.begin () + 2. Der vierte Wert hat Index 3, der VTR entspricht.begin () + 3; usw. Der Index des ersten Werts ist also angegeben durch:
es - vtr.Start()Fallempfindlichkeit
Das Finden in einem Vektor ist fallsempfindlich. Wenn der zu findene Wert „Maisblüten“ für das obige Programm wäre, wäre er nicht gefunden worden, und VTR.End () wäre zurückgegeben worden.
Bereich innerhalb von Grenzen
Der Bereich darf nicht unbedingt der gesamte Vektor sein. Für das obige Programm hätte der Bereich von Index 1 bis Index 4 gewesen sein können. Das heißt, aus „vtr.begin () + 1 “bis„ vtr.end () - 4 ”. „VTR.End () - 4 ”wird durch Subtrahieren von hinten erhalten und beachtet.End () ist direkt jenseits des allerletzten Elements.
Wenn die gesamte Vektorliste der Bereich ist, testen Sie, ob der Rückgabe -Iterator VTR ist.End () gibt an, ob der Wert gefunden wurde oder nicht. Wenn der Rückgabe -Iterator VTR ist.End () bedeutet, dass der Wert nicht gefunden wurde. Wenn nun der Bereich kleiner ist, bedeutet dies, dass der Wert entweder nicht gefunden wurde oder der letzte Wert des Bereichs ist, wenn der Rückgabe -Iterator das letzte Element des gewählten Bereichs ist.
Notiz: Suchstopps im letzten Element des ausgewählten (kleineren) Bereichs, wenn der Wert nicht in diesem Bereich gefunden wurde oder wenn der gefundene Wert das letzte Element des gewählten Bereichs ist. Wenn der gefundene Wert dieses letzte Element wäre, würde ein Iterator, der darauf zeigt, zurückgegeben. Wenn der Wert zuvor gefunden würde, würde die Suche in diesem Element vor dem letzten Element des gewählten Bereichs anhalten. Der Iterator dieses Elements zuvor würde zurückgegeben.
Der folgende Code zeigt dieses Schema:
#enthaltenDie Ausgabe ist:
Blume wurde nicht in Reichweite gefunden!Jetzt ist "Cornflower" in Index 5 und "Kingcup" ist in Index 4. Das letzte Element in der für die Suche ausgewählten kleinen Bereiche ist "Kingcup". Die entsprechende Testbedingung lautet also „It - VTR.begin () == 4 ”. Beachten Sie, dass die Ausdrücke „VTR.end () - 4 ”und„ it - vtr.begin () == 4 ”jeweils 4 ist nur zufällig.
Um "Maisblumen" im kleinen Bereich zu haben, muss die entsprechende Testbedingung "It - VTR" sein.begin () == 5 ”. Der folgende Code zeigt dies:
#enthaltenDie Ausgabe ist:
Blume bei Index gefunden: 5Mehr als ein Ereignis
Im folgenden Programm tritt „Maisblume“ an mehr als einem Ort auf. Um alle Indizes der Vorkommen zu finden, verwenden Sie eine Weile Schleife, um die Suche nach dem vorherigen Auftreten bis zum Ende fortzusetzen (VTR.End ()) des Vektors. Das Programm ist:
#enthaltenDie Ausgabe ist:
Blume bei Index gefunden: 1Ganzzahl finden
Ein Vektor kann aus Ganzzahlen bestehen. Ein erster ganzzahliger Wert kann unter Verwendung der Find () -Funktion (aus der Algorithmus -Bibliothek) gefunden werden). Das folgende Programm zeigt dies:
#enthaltenDie Ausgabe ist:
Nummer bei Index gefunden: 2Prädikat
InputIterator find_if (InputIterator zuerst, InputIterator Last, Predicate Pred);
Die Funktion hier ist find_if () und nicht nur find (). Pred ist der Name der Funktion, die die Suchkriterien angibt. Dieses dritte Argument nimmt nur den Funktionsnamen, ohne Argumente und ohne Klammern. Wenn die Prädikatfunktion Argument nimmt, werden in der Funktionsdefinition die Parameter für die Argumente angegeben. Das folgende Programm zeigt dies und sucht nach der ersten gleichmäßigen Zahl in der Vektorliste:
#enthaltenDie Ausgabe ist:
Nummer bei Index gefunden: 4Beachten Sie, dass der gesamte Vektor mit dem Bereich „VTR“ durchsucht wurde.begin (), vtr.Ende()".
Der Name der Prädikatfunktion hier ist, fn. Es braucht ein Argument, n an int. Da die Funktion find_if () beginnt, den Vektor aus dem ersten Element zu scannen, ruft sie die Prädikatfunktion mit jeder Zahl im Vektor als Argument auf. Das Scannen stoppt, wenn es das erste Element im Vektor erreicht, in dem das Prädikat wahr zurückgibt.
Abschluss
Die Find () -Funktion in der Algorithmus -Bibliothek gibt. Nur die Kategorie wurde oben und in hohem Maße erläutert. Die oben angegebene Erklärung sind die Basen für alle Find () -Funktionen in der Algorithmus -Bibliothek. Find () Funktionen befassen sich direkt mit Iteratoren und bearbeiten Sie indirekt mit Indizes. Der Programmierer muss wissen.