Die C++-Standardbibliothek ist ein mächtiges Werkzeug, das oft unterschätzt wird. Jeder kennt vector, map und string, aber bei der STL (Standard Template Library) geht es nicht nur um grundlegende Container.
Heute zeigt Kodik wenig bekannte, aber verdammt nützliche STL-Chips, die deinen Code verbessern, ihn sauberer und kürzer machen 💪

🔍 1. std::accumulate — kompakte Aggregation
Anstelle eines manuellen Zyklus zum Addieren von Zahlen:
int sum = 0;
for (int x : v) sum += x;Sie können einfach:
#include <numeric>
int sum = std::accumulate(v.begin(), v.end(), 0);
🌀 2. std::transform — Funktionaler Ansatz
Müssen Sie die Operation auf jedes Element anwenden? Schreiben Sie keinen Zyklus — verwenden Sie transform:
std::vector<int> result;
std::transform(v.begin(), v.end(), std::back_inserter(result), [](int x) {
return x * 2;
});🧩 3. std::any und std::variant — Speicherung aller Arten
std::variant<int, std::string> val = "Hello";
if (std::holds_alternative<std::string>(val)) {
std::cout << std::get<std::string>(val);
}🧱 4. std::unordered_map und std::unordered_set — die Macht der Hash-Tabellen
Wenn du die üblichen std::map und std::set verwendest, läuft unter der Haube ausgewogener Binärbaum (normalerweise Rot-Schwarz-Baum). Dies bedeutet, dass Einfügen, Suchen und Löschen O(log n) Zeit in Anspruch nehmen.
Aber std::unordered_map und std::unordered_set sind anders aufgebaut: Sie verwenden Hash-Tabellen. Dadurch bieten sie mittlerer Schwierigkeitsgrad der Operationen — O(1). Das macht sie viel schneller in den meisten Anwendungsproblemen, insbesondere bei großen Datenmengen.
🔥 Beispiel:
#include <unordered_map>
#include <string>
#include <iostream>
int main() {
std::unordered_map<std::string, int> scores;
scores["Alice"] = 90;
scores["Bob"] = 75;
std::cout << scores["Alice"]; // 90
}
Im Gegensatz zu std::map, unordered_map garantiert nicht die Reihenfolge der Elemente. Wenn es dir egal ist, in welcher Reihenfolge die Daten gespeichert werden, — verwenden unordered_-Versionen für maximale Leistung.
🧠 Wann anwenden?
Müssen Sie Ordnung halten? | Verwenden Sie |
|---|---|
Ja |
|
Nein |
|
🧵 5. std::ranges (ab C++20)
#include <ranges>
auto result = v
| std::views::filter([](int x) { return x % 2 == 0; })
| std::views::transform([](int x) { return x * x; });Ermöglicht das Schreiben von Operationsketten - schön und kompakt.
🤯 Bonus: Was gibt es sonst noch in STL
std::optional— eine sichere Alternative zu "magischen Werten"std::span— bequeme Übertragung von Bereichenstd::bitset— kompakte Arbeit mit Flagsstd::invoke- Aufruf beliebiger Funktionen, einschließlich Member-Funktionen
Wenn Sie lernen möchten, STL in realen Aufgaben zu verwenden, laden Sie Anlage Kodik. Dort erwarten dich:
🧠 Interaktive C++-Lektionen
✅ Übungen mit Lösungsprüfung
💬 Entwickler-Community
Lernen Sie nicht alleine zu programmieren, sondern mit unserer Unterstützung Telegram-Kanal 💙
