La bibliothèque de modèles standard (STL) est un ensemble de classes de modèles C ++ pour fournir des structures de données et des fonctions de programmation courantes telles que des listes, des piles, des tableaux, etc. Dans cet article STL en C ++, nous aborderons les pointeurs suivants:
Passer à cet article sur STL en C ++
Modèles C ++
C ++ nous fournit une fonctionnalité de modèles qui permet aux fonctions et aux classes de fonctionner avec des types génériques. Cela permet la réutilisabilité d'une fonction ou d'une classe et lui permet de travailler sur de nombreux types de données différents sans être réécrit pour chacun.
Passer à cet article sur STL en C ++
Fonctions génériques et STL
Lors de la programmation de nombreuses fois, il est nécessaire de créer des fonctions qui exécutent les mêmes opérations mais fonctionnent avec des types de données différents. Donc, pour surmonter ce problème, C ++ fournit une fonctionnalité pour créer une seule fonction générique au lieu de nombreuses fonctions qui peuvent fonctionner avec différents types de données en utilisant le paramètre de modèle. La collection de ces classes et fonctions génériques est appelée bibliothèque de modèles standard (STL)
Les composants de STL qui font maintenant partie de la bibliothèque C ++ standard sont définis dans l'espace de noms std. Nous devons donc utiliser la directive using namespace pour les importer dans notre programme.
Syntaxe:
Utilisation de l'espace de noms std
STL a trois composants
Conteneurs
Algorithmes
Itérateurs
Ces trois composants fonctionnent ensemble en synergie pour fournir un soutien à une variété de solutions de programmation. L'algorithme emploie des itérateurs pour effectuer des opérations stockées dans des conteneurs.
Un conteneur est un objet qui stocke des données en mémoire de manière organisée. Les conteneurs dans STL sont implémentés par des classes de modèles et peuvent donc être facilement modifiés et personnalisés pour contenir différents types de données.
Une procédure utilisée pour traiter les données contenues dans les conteneurs est définie comme un algorithme. La STL comprend de nombreux types d'algorithmes différents pour prendre en charge des tâches telles que l'initialisation, la recherche, la copie, le tri et la fusion, la copie, le tri et la fusion. Les algorithmes sont implémentés par des fonctions de modèle.
Un itérateur peut être défini comme un objet qui pointe vers un élément dans un conteneur. Les itérateurs peuvent être utilisés pour parcourir le contenu des conteneurs. Les itérateurs sont traités comme des pointeurs. Nous pouvons les incrémenter ou les décrémenter. Les itérateurs connectent l'algorithme aux conteneurs et jouent un rôle clé dans la manipulation des données stockées dans les conteneurs.
Passer à cet article sur STL en C ++
Conteneurs
STL définit dix conteneurs qui sont regroupés en trois catégories.
Conteneurs | La description | En tête de fichier | Itérateur |
Vecteur | Il peut être défini comme un tableau dynamique. Il permet un accès direct à n'importe quel élément. algorithme de fibonacci c ++ | Accès aléatoire | |
liste | C'est une liste linéaire bidirectionnelle. Il permet l'insertion et la suppression n'importe où | Bidirectionnel | |
et | C'est une file d'attente à deux extrémités. Permet des insertions et des suppressions aux deux extrémités. Permet un accès direct à n'importe quel élément. | Accès aléatoire | |
ensemble | C'est un conteneur associé pour stocker des ensembles uniques. Permet une recherche rapide. | Bidirectionnel | |
multiset | C'est un conteneur associé pour stocker des ensembles non uniques. | Bidirectionnel | |
carte | C'est un conteneur associé pour stocker des paires clé / valeur uniques. Chaque clé est associée à une seule valeur. | Bidirectionnel | |
multimap | C'est un conteneur associé pour stocker la clé / valeur dans lequel une clé peut être associée à plus d'une valeur (mappage un-à-plusieurs). Il permet une recherche basée sur les clés. | Bidirectionnel | |
empiler | Une pile standard suit le dernier entré, premier sorti (LIFO) | Pas d'itérateur | |
queue | Une file d'attente standard suit le premier entré, premier sorti (FIFO) | Pas d'itérateur | |
File d'attente de priorité | Le premier élément sorti est toujours l'élément de priorité la plus élevée | Pas d'itérateur |
Conteneurs de séquence
Les conteneurs de séquence stockent les éléments dans un ordre linéaire. Tous les éléments sont liés les uns aux autres par leur position le long de la ligne. Ils permettent l'insertion d'élément et tous supportent plusieurs opérations sur eux.
La STL fournit trois types d'éléments de séquence:
- Vecteur
- liste
- et
Conteneurs associatifs:
Ils sont conçus de manière à pouvoir prendre en charge l'accès direct aux éléments à l'aide de clés. Ils ne sont pas séquentiels. Il existe quatre types de
conteneurs associatifs:
- Ensemble
- Multiset
- Carte
- Multimap
Tous les conteneurs ci-dessus stockent les données dans une structure appelée arbre qui facilite
recherche, suppression et insertion contrairement à séquentiel. L'ensemble de conteneurs ou multi-ensembles peut stocker divers éléments et fournir des opérations pour les manipuler en utilisant les valeurs comme clés.
Et la carte ou Multimap sont utilisées pour stocker des éléments par paire, l'un appelé la clé et l'autre
appelé la valeur.
Conteneurs dérivés:
Le STL fournit trois conteneurs dérivés à savoir, pile, file d'attente et priority_queue. Ceux-ci sont également appelés adaptateurs de conteneur.
Il existe trois types de conteneurs dérivés:
1. pile
2. file d'attente
3.Priority_quue
Les piles, la file d'attente et la file d'attente prioritaire peuvent facilement être créées à partir de différents conteneurs de séquence. Les conteneurs dérivés ne prennent pas en charge les itérateurs et nous ne pouvons donc pas les utiliser pour la manipulation de données. Cependant, ils prennent en charge deux fonctions membres pop () et push () pour l'implémentation des opérations de suppression et d'insertion.
Passer à cet article sur STL en C ++
conversion de type de données en java
Algorithmes
Les algorithmes sont des fonctions qui peuvent être utilisées généralement dans une variété de conteneurs pour traiter leur contenu. Bien que chaque conteneur fournisse des fonctions pour ses opérations de base, STL fournit plus de soixante algorithmes standard pour prendre en charge des opérations plus étendues ou complexes. Les algorithmes standard nous permettent également de travailler avec deux types de conteneurs différents en même temps.
Les algorithmes STL renforcent la philosophie de la réutilisabilité. En utilisant ces algorithmes, les programmeurs peuvent économiser beaucoup de temps et d'efforts. Pour avoir accès aux algorithmes STL, nous devons inclure dans notre programme.
L'algorithme STL, basé sur la nature des opérations qu'ils effectuent, peut être classé comme suit:
Algorithmes non mutants
Algorithmes mutants
Algorithmes de tri
Définir des algorithmes
Algorithme relationnel
Passer à cet article sur STL en C ++
Itérateurs:
Les itérateurs agissent comme des pointeurs et sont utilisés pour accéder aux éléments du conteneur. Nous utilisons des itérateurs pour parcourir le contenu des conteneurs. Les itérateurs sont traités comme des pointeurs. Nous pouvons les incrémenter ou les décrémenter selon nos besoins. Les itérateurs connectent les conteneurs à des algorithmes et jouent un rôle essentiel dans la manipulation des données stockées dans les conteneurs. Ils sont souvent utilisés pour passer d'un élément à un autre, ce processus est appelé itération à travers le conteneur.
Il existe cinq types d'itérateurs:
1. entrée
2. sortie
3. avant
4. bidirectionnel
5. aléatoire
Itérateur | Méthode d'accès | Direction du mouvement | Capacité d'E / S | Remarque |
Contribution | Linéaire | Transférer uniquement | Lecture seulement | Ne peut pas être enregistré |
Production | Linéaire | Transférer uniquement | Ecrire uniquement | Ne peut pas être enregistré |
Vers l'avant | Linéaire | Transférer uniquement | Lire écrire | Peut être sauvé |
Bidirectionnel | Linéaire | En avant et en arrière | Lire écrire | Peut être sauvé |
Aléatoire | Aléatoire | En avant et en arrière | Lire écrire | Peut être sauvé |
Différents types d'itérateurs doivent être utilisés avec les différents types de conteneurs de sorte que seuls
Les conteneurs de séquence et associatifs sont autorisés à parcourir les itérateurs. Chaque type d'itérateurs est utilisé pour exécuter certaines fonctions. Les itérateurs d'entrée et de sortie prennent en charge le moins de fonctions. Ils ne peuvent être utilisés que pour passer dans un conteneur. Les itérateurs avant prennent en charge toutes les opérations des itérateurs d'entrée et de sortie et conservent également leur position dans le conteneur. Un itérateur bidirectionnel, tout en prenant en charge toutes les opérations d'itérateurs avant, offre la possibilité de se déplacer vers l'arrière dans le conteneur.
Nous sommes donc arrivés à la fin de cet article sur «STL en C ++». Si vous souhaitez en savoir plus, consultez le par Edureka, une entreprise d'apprentissage en ligne de confiance. Le cours de formation et de certification Java J2EE et SOA d'Edureka est conçu pour vous former aux concepts Java de base et avancés ainsi qu'à divers frameworks Java tels que Hibernate et Spring.
Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de ce blog et nous vous répondrons dans les plus brefs délais.