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?
- sort: Für jede Art von Sortierung
- find: Zum schnellen Auffinden eines bestimmten Werts
- count: Zum Zählen, wie oft ein Wert vorkommt
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
Einzigartige Elemente mit std::set und std::multiset in C++
Lernen Sie std::set und std::multiset in C++ für eindeutige Elemente, sortierte Sammlungen und effiziente Suchvorgänge.
Iteratoren und ihr Einsatz in der C++ STL
Lernen Sie Iteratoren in C++ und ihren Einsatz mit STL-Containern und Algorithmen für eine effiziente Datenverarbeitung.
std::vector in C++ verwenden
Lernen Sie die Verwendung von std::vector in C++ für dynamische Arrays und effiziente Datenverwaltung.
Überblick über die C++-Standardbibliothek
Lernen Sie die C++-Standardbibliothek mit STL-Containern, Algorithmen und wichtigen Komponenten für moderne C++-Entwicklung.