La STL ("Standard Templates Library") est une librairie qui est constituée principalement par des classes containers (très efficace), ainsi que des fonctionnalités pour parcourir (iterator) leur contenu et des algorithmes pour travailler sur leur contenu.
Techniquement parlant le terme "STL" n'est plus significatif car ces classes on été pleinement intégrés à la librairie standard (std) ainsi que d'autres classes telles que iostream, aussi, en parlant de ces classes, on utilise souvent le terme std. Toutefois beaucoup de gens se réfèrent à la STL comme si elle était une chose séparée, donc vous entendrez le terme STL à la place de std.
[ Haut | Bas | Rechercher ]
[ Haut | Bas | Rechercher ]
La solution est de fournir un paramètre optionnel qui spécifie la fonction de "comparaison". La class template suivante permet de comparer des objets connaissant un pointeur vers ces objets.
template<class
T>
class DereferencedEqual
{
public:
DereferencedEqual(const T* p) : p_(p)
{ }
bool operator()
(const T* p2) const { return *p_ == *p2; }
private:
const
T* p_;
};
Maintenant vous pouvez utiliser ce template pour trouver une objet Fred:
void userCode(vector<Fred*> v, const Fred& match)
{
find_if(v.begin(), v.end(), DereferencedEqual<Fred>(&match));
// ...
}
[ Haut | Bas | Rechercher ]
Le guide de Kenny Zalewski's sur la STL (anglais): www.cs.rpi.edu/projects/STL/htdocs/stl.html
Le guide de Musser's sur la STL (anglais): www.cs.rpi.edu/~musser/stl.html
Le guide de Mumit's sur la STL pour débutant (anglais): www.xraylith.wisc.edu/~khan/software/stl/STL.newbie.html
[ Haut | Bas | Rechercher ]
Si vous utilisez des templates pour implémenter des containers, le compilateur C++ peut valider statiquement 90% des informations de type d'une application (l'estimation "90+%" est un apocryphe; certain disent obtenir 100% de typage statique, les gens qui ont besoin de persistance obtiennent moins de 100% de vérification de type statique). Le point important est: la généricité en C++ est obtenue avec les templates et non pas avec l'héritage.
[ Haut | Bas | Rechercher ]
NIHCL (des gens prononce "N-I-H-C-L," d'autres "nickel") est une traduction C++ de la librairie de classe de Smalltalk . Il y a des cas ou l'utilisation du typage dynamique aide NIHCL (E.g., les objets persistent ). Il y a aussi d'autre cas ou l'utilisation du typage dynamique crée des tension avec le typage statique du langage C++.
[ Haut | Bas | Rechercher ]
[ Haut | Bas | Rechercher ]
Une raison qui rend les exécutables aussi volumineux est que des portions de la librairie d'exécution C++ peut être lié avec votre programme. Quelle quantité sera lié dépend de ce que vous utilisez et de comment le programmeur a découpé la librairie en modules (fichiers). (N.D.T : des lieurs récents tente de n'inclure que le code réellement utilisé et non pas tout les modules ou une portion du code est utilisé) Par exemple, la librairie <iostream.h> est assez volumineuse, et inclus de nombreuse classes et de nombreuses fonctions virtuel . Utiliser une partie de cette librairie peut conduire a l'inclusion de tout (ou presque) le code de <iostream.h> du aux interdépendances du code (N.D.T : ceci est particulièrement vrai lorsque que l'on utilise intensivement les fonctions virtuels dans une librairie).
Vous pouvez rendre votre programme plus petit en utilisant une version dynamiquement lié (DLL) de la libraire en place d'une version lié statiquement.
Vous devez consulter le manuel de votre compilateur ou le support technique du compilateur pour une réponse plus détaillé.
[ Haut | Bas | Rechercher ]
[ Haut | Bas | Rechercher ]
Ecrire à l'auteur,
au traducteur,
ou en savoir plus sur la traduction.
C++ FAQ Lite fr |
Table des matières |
Index |
A propos de l'auteur |
© |
Téléchargez votre propre copie ]
Dernière révision Sun Apr 13 23:54:03 PDT 2003