Nicht verändernde Algorithmen: find, count, all_of
Durchsuchen und prüfen Sie Containerinhalte, ohne sie zu verändern.
Nicht verändernde Algorithmen: find, count, all_of ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
Nur lesende Operationen
Nicht verändernde Algorithmen untersuchen einen Bereich, ohne ihn zu ändern. Sie befinden sich in <algorithm>.
std::find
Ermittelt das erste Element, das einem Wert entspricht. Gibt einen Iterator zurück – end, wenn kein Element gefunden wurde.
#include <algorithm>
std::vector<int> v = {3, 1, 4, 1, 5};
auto it = std::find(v.begin(), v.end(), 4);
if (it != v.end()) std::cout << "found at " << (it - v.begin());std::find_if
Ermittelt das erste Element, das ein Prädikat erfüllt.
auto it = std::find_if(v.begin(), v.end(),
[](int x) { return x > 3; });std::find_if_not
Das Gegenstück zu find_if – ermittelt das erste Element, das ein Prädikat nicht erfüllt.
std::count und std::count_if
Zählt Vorkommen oder Elemente, die ein Prädikat erfüllen. Gibt ptrdiff_t zurück.
int n = std::count(v.begin(), v.end(), 1); // count of 1s
int m = std::count_if(v.begin(), v.end(),
[](int x) { return x > 2; });std::all_of std::any_of std::none_of
Prüft ein Prädikat für den gesamten Bereich:
all_of– jedes Element erfüllt das Prädikatany_of– mindestens ein Element erfüllt esnone_of– kein Element erfüllt es
bool allPositive = std::all_of(v.begin(), v.end(),
[](int x) { return x > 0; });
bool anyEven = std::any_of(v.begin(), v.end(),
[](int x) { return x % 2 == 0; });std::equal
Vergleicht zwei Bereiche Element für Element.
std::vector<int> a = {1, 2, 3};
std::vector<int> b = {1, 2, 3};
bool same = std::equal(a.begin(), a.end(), b.begin());std::mismatch
Ermittelt das erste Elementpaar, das sich zwischen zwei Bereichen unterscheidet. Gibt ein Paar von Iteratoren zurück.
std::adjacent_find
Ermittelt das erste Paar benachbarter, gleicher Elemente (oder das erste Paar, das ein Prädikat erfüllt).
std::vector<int> v = {1, 2, 2, 3};
auto it = std::adjacent_find(v.begin(), v.end());
std::cout << *it; // 2std::min_element std::max_element
Gibt einen Iterator auf das kleinste oder größte Element zurück. Übergeben Sie ein Prädikat, um anders zu vergleichen.
auto it = std::max_element(v.begin(), v.end());
std::cout << *it;std::for_each
Ruft für jedes Element eine Funktion auf. Der Rückgabewert der Funktion wird ignoriert.
std::for_each(v.begin(), v.end(),
[](int x) { std::cout << x << " "; });Ranges-Versionen (C++20)
C++20 hat Range-Überladungen hinzugefügt, die einen einzelnen Bereich anstelle von zwei Iteratoren akzeptieren. Das sorgt für eine übersichtlichere Syntax.
#include <ranges>
auto it = std::ranges::find(v, 4);
bool ok = std::ranges::all_of(v, [](int x) { return x > 0; });Schnelltest
Welcher Algorithmus gibt nur dann true zurück, wenn jedes Element ein Prädikat erfüllt?
Zusammenfassung
Nicht verändernde Algorithmen untersuchen Bereiche, ohne sie zu ändern: find, count, all_of/any_of/none_of, min_element, equal. C++20-Ranges bieten eine übersichtlichere Syntax für einzelne Bereiche.
Häufig gestellte Fragen
Ist die Lektion „Nicht verändernde Algorithmen: find, count, all_of“ kostenlos?
Ja — der vollständige Text von „Nicht verändernde Algorithmen: find, count, all_of“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Nicht verändernde Algorithmen: find, count, all_of“?
Durchsuchen und prüfen Sie Containerinhalte, ohne sie zu verändern. Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C++ Academy zu starten?
Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Nicht verändernde Algorithmen: find, count, all_of“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?
Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Nicht verändernde Algorithmen: find, count, all_of
- Verändernde Algorithmen: transform, copy_if, replace
- Sortieren und Partitionieren: sort, stable_partition
- Numerische Algorithmen: accumulate, reduce, transform_reduce