Programmation C ++: opérations sur une liste entière

Certains programmes de C peuvent traiter des données comme il arrive et dispenser. La plupart des programmes, cependant, doivent stocker des données pour un traitement ultérieur. Une structure qui est utilisée pour stocker des données est connue de façon générique en tant que récipient ou un collection. (Beaucoup de gens utilisent les termes de façon interchangeable.)

Début programmes comptent habituellement lourdement sur le tableau pour le stockage des données. Le conteneur de gamme dispose d'un couple de belles propriétés: Il stocke et récupère les choses rapidement. En outre, le tableau peut être déclaré à tenir tout type d'objet dans un chemin de type sécurisé. Comparativement à ces avantages, cependant, sont deux grands négatifs.

Tout d'abord, vous devez connaître la taille de la matrice au moment où elle est créée. Cette exigence est généralement pas possible, bien que vous saurez parfois que le nombre d'éléments ne peut pas dépasser une certaine “ grande valeur ”.

Virus, cependant, généralement ce type d'exploit “ il ne peut pas être plus grand que ce ” hypothèse, qui se révèle être incorrecte. Il n'y a aucune vraie manière de “ croître ” un tableau, sauf pour déclarer un nouveau tableau et copier le contenu de l'ancien tableau dans la plus récente, la plus grande version.




Deuxièmement, insérer ou de retirer des éléments n'importe où dans le réseau implique en copiant des éléments dans le tableau. Ceci est coûteux en termes de mémoire et de temps de calcul. Tri des éléments dans un tableau est encore plus cher.

C ++ est désormais livré avec la Standard Template Library, ou STL, qui comprend de nombreux types de conteneurs, chacun avec son propre ensemble d'avantages (et inconvénients).

Le Standard Template Library C ++ est une très grande bibliothèque de conteneurs parfois complexes. Cette session est considérée comme juste un aperçu de la puissance de la STL.

La bibliothèque STL définit certaines opérations sur la liste entière. Par exemple, la liste :: sort () méthode dit “ je vais trier la liste pour vous si vous aurez juste me dire quels objets aller d'abord ”. Vous faites cela en définissant operatorlt; (const T, const T). Cet opérateur est déjà défini pour les types intrinsèques et de nombreuses classes de la bibliothèque tels que chaîne. Par exemple, vous ne devez rien faire pour trier une liste d'entiers:

liste scores-scores.push_back (10) -scores.push_back (1) -scores.push_back (5) -scores.sort () -

Le programmeur doit définir son propre opérateur de comparaison pour ses propres classes si elle veut C ++ pour les trier. Par exemple, la comparaison suivante sortes Étudiant objets par leur carte d'étudiant:

bool operatorlt; (Student const s1, étudiant const s2) {return s1.ssID lt; s2.ssID-}

» » » » Programmation C ++: opérations sur une liste entière