Maison  >  Article  >  développement back-end  >  Résumé des conteneurs courants en C++_STL : conteneurs associatifs et conteneurs séquentiels par paires

Résumé des conteneurs courants en C++_STL : conteneurs associatifs et conteneurs séquentiels par paires

php是最好的语言
php是最好的语言original
2018-07-28 11:31:122317parcourir

Paire paire

Dans cette partie, nous introduisons d'abord les opérations courantes des conteneurs associés et des conteneurs séquentiels par paires, puis introduisons celles couramment utilisées Plusieurs conteneurs spécifiques associés.

1. Conteneur associatif

Le conteneur associatif est un type de collection d'objets de stockage qui prend en charge une requête efficace par clé. La plupart du comportement des conteneurs associatifs est le même que celui des conteneurs séquentiels. La différence essentielle entre les deux est que les conteneurs associatifs stockent et lisent les éléments par clé, tandis que les conteneurs séquentiels stockent et accèdent aux éléments séquentiellement en fonction de leur position dans le conteneur.
Chaque élément d'un conteneur associatif contient une clé et une valeur. Lorsqu'un élément est inséré dans un conteneur associatif, la structure de données interne du conteneur place l'élément à l'emplacement approprié selon certaines règles basées sur la taille de sa valeur clé. Les conteneurs associatifs n'ont pas de tête ni de queue, seuls le plus grand élément et le plus petit élément ne fournissent pas d'opérations front, push_front, pop_front, back, push_back et pop_back.
Les conteneurs associatifs STL standards sont divisés en deux catégories : set (set) et map (mapping), ainsi que leurs dérivés multiset (ensemble multi-clés) et multimap (table de mappage multi-clés). Les mécanismes sous-jacents de ces conteneurs sont tous implémentés dans RB-tree (arbre rouge-noir).

2. Opérations communes des conteneurs associatifs et des conteneurs séquentiels

1. Constructeurs partagés par les conteneurs associatifs et les conteneurs séquentiels

Les conteneurs associatifs partagent la plupart des opérations des conteneurs séquentiels, mais Tous, les conteneurs associatifs ne peuvent pas utiliser les trois constructeurs suivants :

C<T> c;
  • 1

Créez un conteneur vide nommé c. C est le nom du type de conteneur, tel que vector, et T est le type d'élément, tel que int ou string. Fonctionne avec tous les conteneurs.

C<T> c(c2);
  • 1

Créer une copie c du conteneur c2 et c2 doivent avoir le même type de conteneur et stocker le même type ; d'élément. Fonctionne avec tous les conteneurs.

C<T> c(b, e);
  • 1

Crée c dont les éléments sont des copies des éléments dans les plages identifiées par les itérateurs b et e. Fonctionne avec tous les conteneurs.

2. Autres fonctions partagées par les conteneurs associatifs et les conteneurs séquentiels

  1. Les conteneurs associatifs ne peuvent pas être définis par la taille du conteneur, car alors la valeur correspondant à la clé ne peut pas être connu Qu'est-ce que c'est.

  2. Les conteneurs associatifs prennent en charge certains opérateurs relationnels de conteneurs séquentiels.

  3. Les conteneurs associés prennent en charge les opérations de début, de fin, de rbegin et de rendu.

  4. Les conteneurs associatifs prennent en charge les opérations d'échange et d'affectation, mais ne fournissent pas la fonction d'affectation.

  5. Les conteneurs associatifs prennent en charge les fonctions d'effacement et d'effacement, mais l'opération d'effacement des conteneurs associés renvoie le type void.

  6. Les conteneurs associés prennent en charge les fonctions size(), max_size() et empty() en tant qu'opérations de taille de conteneur, mais ne prennent pas en charge la fonction resize().

3. Opérations fournies par type de paire

La paire contient deux valeurs de données. L'utilisation spécifique est la suivante :

pair<T1, T2> p1;
  • 1

Créer un objet paire vide, ses deux éléments sont de type T1 et T2, initialisé par valeur.

pair<T1, T2> p1(v1, v2);
  • 1

Créer un objet paire dont les deux éléments sont respectivement de type T1 et T2, où le premier membre est initialisé comme v1, le deuxième membre est initialisé à v2.

make_pair(v1, v2);
  • 1

Créer un nouvel objet paire avec les valeurs v1 et v2, les types de ses éléments sont respectivement de type v1 et v2 .

p1 < p2;
  • 1

L'opération inférieure à entre deux objets paires, sa définition suit l'ordre lexicographique : si p1.first<p2.first ou !(p2.first<p1.first)&&p1.second<p2.second, renvoie vrai.

p1 == p2;
  • 1

Si le premier membre et le deuxième membre de deux objets paires sont égaux dans l'ordre, alors les deux objets sont égaux . L'opération utilise l'opérateur == de ses éléments.

p.first、p.second;
  • 1

Renvoie les membres des données publiques nommés premier et deuxième dans la p.

4. Création et initialisation d'une paire

Lors de la création d'un objet paire, vous devez fournir deux noms de type Chacun des deux données membres de l'objet paire correspond à un Les deux noms de type. peut être différent. Si aucune initialisation explicite n'est fournie lors de la création d'un objet paire, le constructeur par défaut est appelé pour initialiser ses membres ; vous pouvez également utiliser () pour afficher directement la formule d'initialisation lors de la création d'un objet :
- paire

Si vous utilisez plusieurs objets paires identiques, vous pouvez également utiliser typedef pour simplifier leur déclaration :

typedef  pair <string, string>  Author;
Author 对象名(初始值1,初始值2);
  • 1

  • 2

Pour la classe paire, vous pouvez accéder directement à ses données membres. Ses membres sont tous publics et sont nommés respectivement premier membre et deuxième membre. accessible à l’aide de l’opérateur point.

Articles connexes :

Utilisation de l'itérateur du conteneur standard C++ STL

Résumé des points de révision C++ z n° 12 - Chaîne STL

Vidéos associées :

Tutoriel C#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn