Heim  >  Artikel  >  Web-Frontend  >  Wie finde ich ein Element in einem Array mit der Suchfunktion?

Wie finde ich ein Element in einem Array mit der Suchfunktion?

WBOY
WBOYOriginal
2023-11-18 12:24:001690Durchsuche

Wie finde ich ein Element in einem Array mit der Suchfunktion?

Im Programmierprozess kommt es oft vor, dass wir ein Element in einem Array finden müssen. Zu diesem Zeitpunkt können wir die Suchfunktion verwenden, um diese Aufgabe einfach abzuschließen. In diesem Artikel wird detailliert beschrieben, wie Sie die Suchfunktion verwenden, um Elemente in einem Array zu finden, und es werden einige Codebeispiele bereitgestellt.

1. Definition der Suchfunktion

In C++ STL ist die Suchfunktion in der Header-Datei definiert und hat die folgenden zwei überladenen Formen:

  1. find(iterator first, iterator last, wait Elementwert suchen). ): Suchen Sie nach einem Wert im Bereich [erster, letzter] und geben Sie den Iterator zurück, der auf das Element zeigt. Wenn er nicht gefunden wird, geben Sie den letzten Iterator zurück.
  2. find(Iterator zuerst, Iterator zuletzt, zu findender Elementwert, Funktion cmp): Wie oben, aber verwenden Sie die Funktion cmp, um zu bestimmen, ob die Elemente gleich sind.

Unter diesen muss die zweite Version der cmp-Funktion die folgenden Anforderungen erfüllen:

  • Der Rückgabewert der Funktion ist vom Typ Bool.
  • Der Funktionsparametertyp ist derselbe wie der Wert des zu findenden Elements.

2. Verwenden Sie die Suchfunktion, um Elemente im Array zu finden.

Angenommen, wir haben ein ganzzahliges Array a und möchten herausfinden, ob es das Element x enthält. Wir können die Suchfunktion verwenden, um diese Aufgabe abzuschließen. Der spezifische Code lautet wie folgt:

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int a[] = {1, 3, 5, 7, 9};
    int x = 5;
    int* p = find(a, a + 5, x);    // 在a数组中查找元素x
    if (p != a + 5) {    // 如果找到了,输出对应下标,否则输出未找到
        cout << "找到了,下标为:" << p - a << endl;
    } else {
        cout << "未找到" << endl;
    }
    return 0;
}

Der obige Code definiert zunächst ein ganzzahliges Array a und ein zu findendes Element x und verwendet dann die Suchfunktion, um das Element x in zu finden das Array a. Wenn gefunden, wird der Index des Elements im Array ausgegeben; andernfalls wird die Ausgabe nicht gefunden.

3. Verwenden Sie Funktionsobjekte, um Vergleichsregeln anzupassen.

Mit der zweiten Version der Suchfunktion können Sie Funktionsobjekte verwenden, um Vergleichsregeln anzupassen. Im folgenden Beispiel definieren wir eine Struktur Cmp und überladen den ()-Operator, um die Größe entsprechend der absoluten Größe der Elemente zu vergleichen.

#include <iostream>
#include <algorithm>
using namespace std;

struct Cmp {
    bool operator() (int x, int y) {
        return abs(x) < abs(y);
    }
};

int main() {
    int a[] = {-3, 1, -5, 7, 2};
    int x = -5;
    int* p = find(a, a + 5, x, Cmp());    // 在a数组中按照绝对值大小查找元素x
    if (p != a + 5) {
        cout << "找到了,下标为:" << p - a << endl;
    } else {
        cout << "未找到" << endl;
    }
    return 0;
}

Im obigen Code definieren wir die Vergleichsregel als eine Struktur namens Cmp, die den ()-Operator überlädt, sodass er den absoluten Wert der Elemente vergleicht. In der Suchfunktion verwenden wir Cmp(), um ein Funktionsobjekt zu instanziieren, das gemäß den definierten Regeln durchsucht werden soll.

Zusammenfassung

In diesem Artikel wird erläutert, wie Sie mithilfe der Suchfunktion in C++ STL Elemente in einem Array finden, und es werden einige Codebeispiele bereitgestellt. Durch die Anpassung der Vergleichsregeln demonstrieren wir auch die Flexibilität der Suchfunktion. In der tatsächlichen Entwicklung können wir auf den Inhalt dieses Artikels zurückgreifen, um geeignete Vergleichsregeln auszuwählen, um bessere Funktionen für unsere Programme bereitzustellen.

Das obige ist der detaillierte Inhalt vonWie finde ich ein Element in einem Array mit der Suchfunktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn