C++20 : la librairie std::ranges

Spécialité(s)


Résumé

Depuis sa création, la STL s’appuie sur le concept d’itérateurs pour manipuler les conteneurs, et depuis sa création, de nombreuses voix s’élèvent pour dire que ce n’est pas pratique. Cette nouvelle librairie est la réponse à cette longue complainte.


La librairie ranges, est directement inspirée de la librairie Range-v3 d’Éric Niebler qui est disponible ici [range-v3] pour C++14.

La motivation de l’introduction de cette librairie est de rendre plus pratique l’utilisation des conteneurs et des algorithmes de la STL.

L’exemple classique pour illustrer cette amélioration est l’appel à l’algorithme de tri sort :

using namespace std;
vector<double> tbl{ 1,8.2,4,-5,2,-9,3,9 };
// Avant
sort(tbl.begin(), tbl.end());
// Avec les ranges
ranges::sort(tbl);

Avant, il fallait désigner un conteneur par son itérateur de début et sa fin, maintenant on transmet juste le conteneur.

À l’heure de l’écriture de cet article, cette librairie n’est disponible que dans les dernières versions de Visual Studio. L’implémentation pour les autres compilateurs ne devrait pas tarder et sera peut-être terminée à l’heure où vous lirez ces lignes.

1. Définitions et principes

Nous avons vu...

Cet article est réservé aux abonnés. Il vous reste 94% à découvrir.
S'abonner à Connect
  • Accédez à tous les contenus de Connect en illimité
  • Découvrez des listes de lecture et des contenus Premium
  • Consultez les nouveaux articles en avant-première
Je m'abonne


Article rédigé par

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous