0Pricing
C++ Academy · Leçon

Catégories d’itérateurs : input, forward, bidirectional, random

Distinguer les catégories d’itérateurs et choisir les algorithmes qui leur correspondent

Catégories d’itérateurs : input, forward, bidirectional, random est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C++ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C++ Academy comprend 4 leçons au total.

Qu’est-ce qu’un itérateur

Un itérateur est un pointeur généralisé. Les algorithmes fonctionnent via des itérateurs, ce qui les découple du conteneur sous-jacent.

Cinq catégories d’itérateurs

Les itérateurs sont classés selon leurs capacités :

  • Entrée — lecture seule, parcours unique
  • Sortie — écriture seule, parcours unique
  • À parcours direct — lecture/écriture, plusieurs parcours
  • Bidirectionnel — peut avancer et reculer
  • À accès aléatoire — peut sauter d’un décalage entier

Itérateurs d’entrée

Lisez une fois, avancez, recommencez. Impossible de revenir en arrière. Exemple : std::istream_iterator.

std::istream_iterator<int> in(std::cin), end;
while (in != end) {
    std::cout << *in << " ";
    ++in;
}

Itérateurs de sortie

Écriture uniquement. Exemples : std::ostream_iterator et std::back_inserter.

std::ostream_iterator<int> out(std::cout, " ");
std::vector<int> v = {1, 2, 3};
std::copy(v.begin(), v.end(), out);

Itérateurs à parcours direct

Comme les itérateurs d’entrée, mais avec plusieurs parcours — vous pouvez recommencer l’itération depuis la même position. Exemple : std::forward_list.

Itérateurs bidirectionnels

Itérateurs à parcours direct, avec en plus --. Exemples : std::list, std::map, std::set.

std::list<int> l = {1, 2, 3};
auto it = l.end();
--it;        // OK, points to last element

Itérateurs à accès aléatoire

Itérateurs bidirectionnels avec sauts : it + n, it - n, it[k], it1 - it2. Exemples : std::vector, std::deque, tableaux bruts.

Exigences des algorithmes

Chaque algorithme spécifie la catégorie minimale d’itérateur dont il a besoin. std::sort nécessite un accès aléatoire ; std::find nécessite seulement une entrée.

Caractéristiques des itérateurs

std::iterator_traits<Iter> expose à la compilation le type de valeur de l’itérateur, sa catégorie et ses autres propriétés.

using Category = std::iterator_traits<It>::iterator_category;
using Value = std::iterator_traits<It>::value_type;

std::advance et std::distance

Déplacez un itérateur ou mesurez une distance de manière générique. Ces fonctions utilisent la catégorie pour choisir l’implémentation la plus efficace.

auto it = v.begin();
std::advance(it, 5);              // efficient on random access, O(n) otherwise
auto d = std::distance(v.begin(), it);

Itérateurs personnalisés

Pour écrire le vôtre, définissez les alias de types et les opérations requis pour la catégorie visée — operator*, operator++, operator==, etc.

Concepts d’itérateurs en C++20

C++20 a ajouté des concepts formels tels que std::input_iterator, std::forward_iterator et std::random_access_iterator. Ils remplacent l’ancien système fondé sur des balises.

Vérification rapide

Quelle catégorie d’itérateur prend en charge l’expression it + n en temps constant ?

Récapitulatif

Les itérateurs sont classés selon leurs capacités — entrée, sortie, parcours direct, bidirectionnel, accès aléatoire. Les algorithmes exigent une catégorie minimale. Les itérateurs de vector ont un accès aléatoire ; ceux de list et map sont bidirectionnels.

Questions Fréquemment Posées

La leçon « Catégories d’itérateurs : input, forward, bidirectional, random » est-elle gratuite ?

Oui — le texte complet de « Catégories d’itérateurs : input, forward, bidirectional, random » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C++ Academy, passe à CoddyKit PRO. Le cours C++ Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Catégories d’itérateurs : input, forward, bidirectional, random » ?

Distinguer les catégories d’itérateurs et choisir les algorithmes qui leur correspondent Tu pratiques C++ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C++ Academy ?

Aucune expérience préalable n'est requise. C++ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Catégories d’itérateurs : input, forward, bidirectional, random » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C++ Academy ?

Oui. Chaque leçon C++ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Catégories d’itérateurs : input, forward, bidirectional, random
  2. Schémas courants d’itération : begin, end, advance
  3. Introduction à la bibliothèque Ranges de C++20
  4. Adaptateurs de plages : views::filter, views::transform, views::take
← Retour à C++ Academy