Контейнеры STL: multimap. partie 8




класс multimap c ++, контейнеры STL, multimap pour les débutantsNous avons considéré un exemple simple d'utilisation carte<> pour compter les occurrences de caractères individuels dans le texte. A cet effet, on a utilisé un récipient carte<>. Mais la bibliothèque STL nous et d'autres fournit (fermer) type de récipient - il multimap<>, ce qui permet la présence de beaucoup élément (paire<>) dans sa composition à la le même valeurs clés.

naturellement, que les règles de fonctionnement de base multimap<> changement (par rapport à carte<>). Pour un tel récipient aura les différences suivantes dans le comportement de:

  • Il contient des paires ordonnées <clé,sens>, où la clé et la valeur peuvent appartenir à des types arbitraires;

  • Les éléments avec les valeurs clés doivent pas être uniquemoi, dans la séquence ordonnée d'éléments (par la clé) ces éléments équivalents sont, comment différent éléments, et ils sont disposés l'un après l'autre;

  • Etant donné que les clés sont les mêmes, alors l'opération d'ajout d'une nouvelle paire dans le tableau (méthode insérer()) toujours réussi. Pas besoin de retourner le résultat de cette opération: la valeur de retour - vide;

  • Comme il est maintenant dans le récipient peut être beaucoup d'éléments avec des clés égales, il a introduit une méthode supplémentaire compter(). Il obtient la valeur du paramètre clé, retourne le nombre d'occurrences des éléments, une clé, dans le récipient;

  • les opérations d'enlèvement (méthode effacer()) avec une indication de l'élément à supprimer les suppressions clés tout à coup les éléments ayant la même clé;

Voyons voir comment multimap<> faire face à la tâche précédente. Que les fichiers texte pour le programme d'essai:

30 Frère et soeur 11 Chose impossible à réparer 34 Jabberwock

Comme dans l'exemple précédent, Il utilise plusieurs volumineux pour entrer des caractères à partir du flux, contenant le texte en plusieurs lignes. voici, que et). Je voudrais lire et aussi des espaces comme des symboles, plutôt que comme délimiteurs et b). vous pourriez lire des caractères de la série gin puis en excluant les sauts de ligne. Mais dans le mode de réalisation illustré, il serait souhaitable de préserver l'indépendance du système d'exploitation (distinguer le soi-disant DOS et UNIX saut de ligne). Le reste du code est devenu beaucoup plus court et plus facile.

Résultat de, que nous avons obtenu, ci-dessous (prochaine répétée pour comparer la même action, réalisée carte<>):

класс multimap c ++, контейнеры STL, multimap pour les débutants
multimap
carte класс c ++, контейнеры STL, carte pour les débutants
carte

Nous attirons votre attention sur le fait, le retrait d'un seul opérateur alphabet.erase( 'une’ ) nous avons retiré des tables 38 élément, Identifier les clés 'une’. Où avez la taille Taille() dans 696 élément?




класс multimap c ++, контейнеры STL, multimap pour les débutants

(commande Afficher la forme de wc calcule le système d'exploitation Linux le nombre de lignes fichier. Les sorties de commande ls longueur fichier, à savoir. le nombre d'octets individuels, caractères dans le fichier. Dans Windows, vous pouvez essayer d'obtenir un résultat similaire en utilisant la commande dir.)

Si nous avons le nombre total de symboles (la longueur, en octets,) soustraire le nombre de lignes (sauts de ligne) fichier, alors nous obtenons ce chiffre: 726 – 30 = 696. ainsi, pour chaque symbole d'entrée a été établie séparé élément de table, par exemple, clé 's’ il était 39 ces éléments.

tous, dit précédemment à propos de carte контейнера<> (sauf les locaux et l'algorithme d'échantillonnage) applique pleinement multimap<>, par exemple, exigence de comparabilité et la clé, comment définir ou redéfinir l'opération de comparaison.

Bulletin de nouvelles leçons sur la programmation:

date
page
Контейнеры STL: multimap. partie 8
évaluation
51étoile1étoile1étoile1étoile1étoile
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é>