0Pricing
C++ Academy · Lektion

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 Ganzzahltyp
  • std::signed_integral – vorzeichenbehaftete Ganzzahl
  • std::unsigned_integral – vorzeichenlose Ganzzahl
  • std::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_comparable
  • std::totally_ordered
  • std::three_way_comparable

Objektkonzepte

Häufige Anforderungen:

  • std::movable
  • std::copyable
  • std::default_initializable
  • std::semiregular
  • std::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_iterator
  • std::forward_iterator
  • std::bidirectional_iterator
  • std::random_access_iterator
  • std::contiguous_iterator

Range-Konzepte (C++20)

Aus <ranges>:

  • std::ranges::range – verfügt über begin/end
  • std::ranges::view – nicht besitzender Range
  • std::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 → regular oder semiregular

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

  1. Warum Concepts statt SFINAE?
  2. Concepts mit requires definieren
  3. Concepts in Templates und mit auto verwenden
  4. Häufige Standard-Concepts: Integral und Ranges
← Zurück zu C++ Academy