Häufige Standard-Concepts: Integral und Ranges
Verwenden Sie Bibliotheks-Concepts wie integral und ranges::range.
Häufige Standard-Concepts: Integral und Ranges ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.
Die Standardbibliothek für Konzepte
C++20 hat viele Standardkonzepte in <concepts> und <ranges> eingeführt. Wenn Sie diese kennen, müssen Sie weniger eigene Konzepte schreiben.
Konzepte der Kernsprache
Die grundlegenden Konzepte:
std::same_as<T, U>std::derived_from<T, U>std::convertible_to<T, U>std::common_with<T, U>std::assignable_from<T, U>
Arithmetische Konzepte
Auf numerische Typen beschränken:
std::integral– jeder Ganzzahltypstd::signed_integral– vorzeichenbehaftete Ganzzahlstd::unsigned_integral– vorzeichenlose Ganzzahlstd::floating_point– float, double, long double
template <std::floating_point T>
T mean(T a, T b) { return (a + b) / 2; }Vergleichskonzepte
Beschränken Sie Typen auf Gleichheit und Ordnung:
std::equality_comparablestd::totally_orderedstd::three_way_comparable
Objektkonzepte
Häufige Anforderungen:
std::movablestd::copyablestd::default_initializablestd::semiregularstd::regular
template <std::regular T>
class Container { /* full-fledged value type */ };Aufrufbare Konzepte
Für Funktionen und Funktoren:
std::invocable<F, Args...>std::regular_invocable<F, Args...>std::predicate<F, Args...>
template <std::invocable<int> F>
void apply_to_42(F&& f) {
std::forward<F>(f)(42);
}Iterator-Konzepte
In <iterator>:
std::input_iteratorstd::forward_iteratorstd::bidirectional_iteratorstd::random_access_iteratorstd::contiguous_iterator
Range-Konzepte (C++20)
Aus <ranges>:
std::ranges::range– verfügt über begin/endstd::ranges::view– nicht besitzender Rangestd::ranges::sized_range– kennt seine Größe in O(1)std::ranges::random_access_range
template <std::ranges::range R>
auto first(R&& r) {
return *std::ranges::begin(r);
}Konzepte kombinieren
Kombinieren Sie Konzepte, um präzise Anforderungen auszudrücken.
template <std::ranges::random_access_range R>
requires std::integral<std::ranges::range_value_t<R>>
auto sum(const R& r) {
return std::reduce(std::ranges::begin(r), std::ranges::end(r));
}Benutzerdefinierte Konzepte darauf aufbauen
Bauen Sie domänenspezifische Konzepte auf Standardkonzepten auf.
template <typename T>
concept Number = std::integral<T> || std::floating_point<T>;Konzeptbasierte Algorithmen
Die Ranges-Algorithmen von C++20 sind stark durch Konzepte eingeschränkt. Ihre Fehlermeldungen geben direkt an, welches Konzept fehlgeschlagen ist, wenn Sie einen ungeeigneten Typ übergeben.
Spickzettel
Verwenden Sie nach Möglichkeit die integrierten Konzepte:
- Zahlen →
integral/floating_point - Iteration →
ranges::range - Aufrufbar →
invocable/predicate - Werttyp →
regularodersemiregular
Schnelltest
Welches Standardkonzept beschreibt einen Typ, der sowohl begin() als auch end() besitzt?
Zusammenfassung
Die Standardbibliothek bietet umfangreiche Konzeptbibliotheken: arithmetische Konzepte (integral, floating_point), Vergleichskonzepte (equality_comparable), Objektkonzepte (movable, regular), aufrufbare Konzepte, Iterator- und Range-Konzepte. Verwenden Sie sie als Grundlage für Ihre eigenen Constraints.
Häufig gestellte Fragen
Ist die Lektion „Häufige Standard-Concepts: Integral und Ranges“ kostenlos?
Ja — der vollständige Text von „Häufige Standard-Concepts: Integral und Ranges“ 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 „Häufige Standard-Concepts: Integral und Ranges“?
Verwenden Sie Bibliotheks-Concepts wie integral und ranges::range. 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 4 von 4.
Wie lange dauert die Lektion „Häufige Standard-Concepts: Integral und Ranges“?
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
- Warum Concepts statt SFINAE?
- Concepts mit requires definieren
- Concepts in Templates und mit auto verwenden
- Häufige Standard-Concepts: Integral und Ranges