La librairie standard du C++

1. RAPPELS HISTORIQUES
2. LES FONDAMENTAUX
2.1 ESPACES DE NOMMAGE
2.1.1 MOTIVATION
2.1.2 PROPRIÉTÉS
2.1.3 MISE EN ŒUVRE DES ESPACES DE NOMMAGE
2.1.4 UN EXEMPLE PLUS COMPLET
2.1.5 LA STL ET LES ESPACES DE NOMMAGE
2.2 QUELQUES POINTS À CONNAÎTRE
2.2.1 LA PORTABILITÉ DE LA STL
2.2.2 LES FICHIERS D’ENTÊTE UTILISÉS PAR LA STL
2.3 LES CHAÎNES DE CARACTÈRES
2.3.1 CONSTRUCTION DE VARIABLES DU TYPE STRING, CONVERSION AVEC CHAR *
2.3.2 LES OPÉRATIONS DE ROUTINE
2.4 LES EXCEPTIONS DE LA STL
2.4.1 LA CLASSE EXCEPTION
2.4.2 LA HIÉRARCHIE DES EXCEPTIONS DE LA STL
2.4.3 EXEMPLE D’UTILISATION DES EXCEPTIONS DE LA STL
2.4.4 AUX UTILISATEURS DE C++ BUILDER
2.5 LE SUPPORT DE LA RTTI
2.5.1 QU’EST CE QUE LE RTTI
2.5.2 LA CLASSE TYPE_INFO ET L’OPÉRATEUR TYPEID
2.5.3 EXEMPLE D’UTILISATION DU RTTI
3. LES CLASSES CONTENEUR DE LA STL
3.1 PHILOSOPHIE GÉNÉRALE
3.2 PRÉSENTATION DES CONTENEURS
3.2.1 PRÉSENTATION DES SÉQUENCES ÉLÉMENTAIRES
1.1.2 LES OPÉRATIONS DISPONIBLES SUR L’ENSEMBLE DES SÉQUENCES ÉLÉMENTAIRES
1.1.3 OPÉRATIONS SPÉCIFIQUES
1.1.4 ITÉRATEURS ET SÉQUENCES ÉLÉMENTAIRES
1.1.5 LES UTILISATIONS SPÉCIALISÉES DES SÉQUENCES ÉLÉMENTAIRES
1.1.6 LES CONTENEURS ASSOCIATIFS
1.3 LES ITÉRATEURS
1.3.1 DÉFINITION ET PREMIER CONTACT
1.3.2 LES DIFFÉRENTS TYPES D’ITÉRATEURS
1.3.3 COMMENT OBTENIR UN ITÉRATEUR?61 1.3.4 LES ITÉRATEURS DE FLUX
4. ANNEXE : UN EXEMPLE DE MAKEFILE

Rappels historiques

La librairie standard du C++ est née de la volonté d’apporter aux programmeurs C++ un canevas de programmation efficace, générique et simple à utiliser. Celui-ci comprend notamment :
 Des classes conteneur génériques et des algorithmes associés
 Une classe string paramétrée par le type de caractères qu’elle contient
 Une nouvelle famille de classes flux (iostream).
Autrefois connue sous le nom de STL (Standard Template Library) – avant  l’adjonction de la nouvelle classe chaînes et des bibliothèques de flux étendues–, la Librairie Standard du C++ reprend nombre des caractéristiques de son ancêtre.
Le présent essai n’a pas pour objectif – loin de là – d’être exhaustif sur le domaine mais uniquement de présenter les concepts fondamentaux et quelques exemples (orientés Recherche Opérationnelle) d’utilisation de la STL.
Pour clôturer cette introduction, je voudrais insister sur l’intérêt évident de généraliser l’utilisation de la STL par quelques critères directement issus du génie logiciel.

Les fondamentaux

Espaces de nommage
Cette section décrit l’une des plus récentes additions au standard du C++ : les espaces de nommage.
Motivation
L’une des notions qui manque assurément le plus au C++ est celle de paquetage. Ceci est d’autant plus désastreux que même l’ADA (et, plus récemment, Java), langage pourtant non orienté objet à l’origine l’a toujours proposé. En effet, il est désolant de ne pouvoir rassembler dans un élément du langage un ensemble de classes, de fonctions, de constantes, de types et de variables traitant du même concept.
En outre, un paquetage est habituellement nommé et fournit un niveau d’abstraction supplémentaire sur les noms des entités qu’il contient. En effet, pour accéder à une entité quelconque d’un paquetage, il convient de préfixer son nom par celui du paquetage ou bien d’utiliser une clause spéciale offrant la visibilité sur l’ensemble des déclarations du paquetage.
De surcroît, l’utilisation de tels préfixes permet de résoudre l’un des problèmes les plus courants lorsque l’on utilise différentes bibliothèques de composants logiciels :les collisions de noms. Les préfixes de noms permettent non seulement au programmeur d’éviter la collision mais également à l’éditeur de liens de s’y retrouver. Les espaces de nommage du C++ pallient partiellement au manque de paquetage. En effet, ils permettent de créer – comme leur nom l’indique – un groupe d’entités rassemblées autour d’un préfixe de nommage.
Propriétés
Les espaces de nommage sont pourvus – entre autres – des propriétés remarquables suivantes :
Imbrication :il est possible d’imbriquer les espaces de nommage pour découper un concept en sous parties. On peut ainsi organiser les espaces de nommage du C++ à la manière de l’arborescence des paquetages de Java Définition incrémentale : l’ensemble des déclarations et des définitions d’un espace de nommage peut s’étaler sur plusieurs fichiers source. En outre, tout utilisateur est autorisé à rajouter ses propres déclarations et définitions dans un espace de nommage auquel il a accès. Cette faculté pouvant alternativement être vue comme un avantage ou un inconvénient.
Pas de modification d’accès :contrairement à Java ou ADA, il n’y a pas de notion de visibilité de paquetage associé aux espaces de nommage. En effet, considérons 2 classes A et B appartenant au même espace de nommage. Si elles n’ont pas de relation privilégiée (héritage ou amitié), les méthodes de A
Mise en œuvre des espaces de nommage
Les prochaines sections décrivent succinctement l’essentiel de la syntaxe liée aux espaces de nommage. Après avoir étudié la déclaration d’un espace de nommage, nous verrons comment accéder aux entités qu’il contient.
Déclaration et définition
La déclaration d’un espace de nommage se fait par l’utilisation du mot clef namespace. Comme d’habitude avec le C++, il est possible de faire une déclaration de type « forward » :
namespace identificateur;
La syntaxe de définition d’un espace reprend celle d’un bloc du langage :
namespace identificateur
{
// liste des entités regroupées dans l’espace de nommage
};
L’exemple suivant montre un espace de nommage regroupant deux classes et une constante :
namespaceazedzed
{
class A
{
// définition de la classe A
};
const double PI=3.1415927;
class B
{
// définition de la classe B
};
}
Accès aux membres
Tout d’abord, il faut savoir que chaque membre d’un même espace de nommage a une visibilité directe sur les identificateurs de tout l’espace. Dorénavant, nous ne nous intéresserons qu’à traiter les règles de visibilité depuis l’extérieur de l’espace.

…..

Si le lien ne fonctionne pas correctement, veuillez nous contacter (mentionner le lien dans votre message)
La librairie standard du C++ (394 KO) (Cours PDF)
La librairie standard du C

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *