Wird geladen...

Die C++-algorithm-Bibliothek: sort, find, count

Lernen Sie die C++-algorithm-Bibliothek mit sort, find, count und weiteren STL-Algorithmen für effiziente Datenverarbeitung.

Die C++-Bibliothek <algorithm> enthält leistungsstarke und häufig verwendete Funktionen, um mit Vektoren und anderen STL-Containern effizient zu arbeiten. In diesem Artikel werden drei der am häufigsten genutzten Funktionen vorgestellt: sort, find und count – jeweils mit praktischen Beispielen.


1) Die Funktion sort

std::sort sortiert einen Bereich (z. B. einen Vektor oder ein Array) standardmäßig in aufsteigender Reihenfolge. Die durchschnittliche Zeitkomplexität beträgt O(n log n).

Grundlegende Verwendung


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

int main() {
    vector<int> v = {30, 10, 40, 20};

    sort(v.begin(), v.end());

    for (int n : v)
        cout << n << " ";
}

Ausgabe: 10 20 30 40

Absteigend sortieren


sort(v.begin(), v.end(), greater<int>());

Eigener Vergleichsoperator (Custom Comparator)


sort(v.begin(), v.end(), [](int a, int b) {
    return a % 10 < b % 10; // Sortieren nach letzter Ziffer
});

2) Die Funktion find

std::find durchsucht einen Bereich nach einem bestimmten Wert und gibt einen Iterator auf das erste gefundene Element zurück. Wird der Wert nicht gefunden, so wird der end()-Iterator zurückgegeben.


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

int main() {
    vector<int> v = {10, 20, 30, 40};

    auto it = find(v.begin(), v.end(), 30);

    if (it != v.end())
        cout << "Gefunden: " << *it;
    else
        cout << "Nicht gefunden!";
}

Strings durchsuchen


vector<string> names = {"Anna", "Laura", "Jonas"};

auto it = find(names.begin(), names.end(), "Laura");

3) Die Funktion count

std::count zählt, wie oft ein bestimmter Wert in einem Bereich vorkommt.


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

int main() {
    vector<int> v = {10, 20, 20, 30, 20};

    int c = count(v.begin(), v.end(), 20);

    cout << "Anzahl der 20: " << c;
}

Ausgabe: Anzahl der 20: 3

Bedingtes Zählen (count_if)


int c = count_if(v.begin(), v.end(), [](int x) {
    return x % 2 == 0; // Gerade Zahlen zählen
});

4) Praxisbeispiel — Wörter zählen


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

int main() {
    vector<string> words = {"cpp", "java", "cpp", "python", "cpp"};

    int cppCount = count(words.begin(), words.end(), "cpp");

    cout << "\"cpp\" kommt " << cppCount << " mal vor";
}

5) sort, find und count zusammen verwenden


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

int main() {
    vector<int> v = {50, 20, 10, 20, 40};

    sort(v.begin(), v.end()); // 10 20 20 40 50

    auto it = find(v.begin(), v.end(), 20); // erstes Vorkommen von 20

    int c = count(v.begin(), v.end(), 20); // 2 mal 20

    cout << "Erstes 20 an Index: " << (it - v.begin()) << endl;
    cout << "Gesamtanzahl der 20: " << c;
}

6) Wann sollte man was verwenden?

Die <algorithm>-Bibliothek ist eines der leistungsstärksten Werkzeuge der STL, um effiziente Operationen auf Containern durchzuführen.


7) TL;DR

  • sort: Sortierfunktion (O(n log n))
  • find: Sucht einen Wert und gibt einen Iterator zurück
  • count: Zählt, wie oft ein Wert vorkommt
  • count_if: Zählt Elemente entsprechend einer Bedingung
  • Alle Beispiele funktionieren unter Visual Studio 2022 und GCC.

Ähnliche Artikel