Контейнеры STL. partie 2

Noter cet article




La STL de контейнеры C , Standard Template Library, c ++ conteneur, vecteur

STL Il introduit un certain nombre de concepts et structures de données, que, dans presque tous les cas, permettent de simplifier considérablement le code. Nous introduisons la catégorie des concepts suivants:

  1. récipient - Stockage d'un ensemble d'objets en mémoire.

  2. Iterator - des moyens d'accès au contenu des objets individuels dans le conteneur.

  3. algorithme - Identification des procédures de calcul les plus classiques sur les conteneurs.

  4. adaptateur - Adaptation des principales catégories pour les interfaces les plus couramment utilisés (comme une pile ou file d'attente).

  5. foncteur (entité fonctionnelle) - Fonction de Dissimulation dans un objet à l'utiliser dans d'autres catégories.

bibliothèque STL - Ceci est une très vaste zone. Sa description du livre sont consacrés à l'individu tout entier (Un des meilleurs livres en russe, suffisant pour le développement de la STL en détail, Il est montré à la fin du texte,). nous avons également, en raison du niveau initial de l'amour, envisager technique de STL à des exemples intuitivement clairs.

syntaxe STL Elle repose sur l'utilisation de la syntaxe du langage C ++ sous forme de modèles (modèles) les classes et des modèles de fonction. Mais pour l'application réussie de la technologie STL pas nécessairement une compréhension profonde de la technologie modèles.

Le concept central STL, autour duquel tout le reste tourne, il récipient (Plus l'utilisation du terme collection). Container - une collection d'un certain nombre d'éléments similaires, emballé dans un récipient d'une certaine manière. Juste un prototype de conteneur à la langue classique est C ++ tableau. la manière, quels éléments sont emballés dans le conteneur, Il détermine le type de récipient et le comportement des éléments dans un récipient. STL Elle introduit un certain nombre de différents types de conteneurs:

  • récipients successifs - vecteur (vecteur), liste doublement chaînée (liste), DEK (et);

  • conteneurs associatifs - ensembles (ensemble et multiset ), hashtable (carte et multimap);

  • pseudo-conteneurs - bitmaps (bitset), lignes (chaîne et wstring), tableaux (valarray);

Nous attendons toujours les exemples de l'utilisation du conteneur principal, passant de plus simple au plus complexe. Простейшим типом из них является vecteur. Le plus proche vecteur prototype est un tableau de C ++. Но размер вектора в любое время может динамически изменяться операциями добавления (méthode repousser()) ou supprimer un élément. même, sous forme de tableau, nous pouvons nous tourner à une opération d'indexation de vecteur élément arbitraire [n]. Ceci est le premier, la couche superficielle de la connaissance vecteur, ce qui nous permet de commencer à travailler avec lui:

description vecteur<flotte> (tel est le mentionné précédemment modèle la description de classe) déclare dans le code objet tableau: éléments vectoriels de type flotte.

Ensuite, nous voyons de telles méthodes de classe vecteur<flotte>, comment max_size() - La longueur maximale des vecteurs en général (la mise en oeuvre d'une constante); Taille() - La taille actuelle (le nombre d'éléments) vecteur; capacité() - La capacité actuelle du vecteur (le nombre maximum d'éléments, qui peut être placé dans un vecteur le plaçant dans le courant). Faire ce fragment donne quelque chose comme ce qui suit (les détails peuvent varier en fonction de la mise en œuvre):

La STL de контейнеры C , Standard Template Library, c ++ conteneur, vecteur

Ici vous pouvez voir le comportement des vecteurs très intéressant (en ce sens et il): lors de l'ajout de l'élément suivant, capacité vecteur ne suffit pas, fini nouveau hébergement vecteur, deux fois la capacité de réserver pour lui (avec une marge, d'inclure l'ajout d'un nouvel élément ne soit pas nécessaire une fois la nouvelle réaffectation).

Donc, nous avons obtenu l'équivalent d'un tableau C ++, quelle taille (Taille()) les changements dans les unités arbitraires allant de quelques à des millions d'éléments. Faites attention (il est très important), que l'augmentation de la taille du vecteur est obtenue pas indexation au-delà de sa taille actuelle, et "zatalkivaniem» (méthode repousser()) nouvel élément dans la fin vecteur. Une autre façon de modifier la taille du vecteur - est d'appeler des méthodes redimensionner(). Voilà pourquoi, prévu pour le vecteur 2 différent méthode d'indexation: opération [n] et une fonction de procédé à(n). méthode à() vérifie la taille actuelle du vecteur Taille(), и при индексации за его границу срабатывает exception (il est une erreur!). devant, opération d'indexation ne sont pas des contrôles aux frontières, est dangereux, mais il est plus rapide.

La STL de контейнеры C , Standard Template Library, c ++ conteneur[1] Scott Meyers, L'utilisation efficace de STL, "Peter" Saint-Pétersbourg. 2002, ISBN: 5-94723-382-7, 244 pp. По ссылке можно lire le livre en ligne.

Bulletin de nouvelles leçons sur la programmation:

huile

Sur huile

une expérience pratique sur le développement de logiciels 40 ans. société de logiciels internationale Global Teacher Logic. IBM Developer Works auteur permanent des publications. éditeur scientifique de l'ordinateur littérature maison d'édition "Symbole-Plus", Saint-Pétersbourg.

Laisser un commentaire

Placez le code dans les balises: <pre class="lang:c ++ décodage:true ">VOTRE CODE</pré>