Utilisation de la stl

0/5 (4 avis)

Vue 5 914 fois - Téléchargée 500 fois

Description

Ce programme a été fait pour apprendre l'utilisationde la STL.
Il y a l'utilisation de conteneur, des vector....

Bon a vous de voir tout ca.
Ca pourrai peut-être vous être utile qui sait !!!!

Il doit surement pouvoir être améliorer alors toutes les suggestions sont les bienvenues.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
oki merci tout plein.
malgré les 3 heures du mat' j'ai compris ^^
++
ad
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
C'est parti ( malgré l'heure tardive )

4. La différence entre : Image::Image() { _Taille = 0; }
et Image::Image() : _Taille( 0 ) {} ?

Imaginons que _Taille soit une variable d'une classe Taille
qui a un constructeur à partir d'un entier (et sûrement un opérateur d'affectation)
Dans le premier cas, il y aura appel au constructeur par défaut de la classe Taille puis appele à l'opérateur d'affectation.
Dans le deuxième cas, seul le constructeur à partir d'un entier sera appelé. Le permier cas revient en fait à écrire
Image::Image() : _Taille() { _Taille = 0; }
Imagine si le constructeur par défaut est un peu lourd ou fait des choses inutiles pour finalement être recalculé à partir d'une taille à 0. ( std::string est un exemple )

8. la différence entre a++ et ++a sur un itérateur.
le premier te renvoie un nouvel itérateur temporaire puis incrémente ton itérateur. le deuxième incrémente ton itérateur et t'en renvoie une référence.
Dans le premier cas, tu as une création d'itérateur qui ne te sert pas.

J'espère que ces explications te vont.
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
-> hylvenir:

4. Tu devrais prendre le réflexe d'initialiser tes variables de classe comme suit :
Image::Image() : _Taille( 0 ) {}
et pas
Image::Image() { _Taille = 0; }
// Idem pour pour l'autre constructeur

C'est mieux pour certains objets (je ne m'étends pas).


tu pourrais t'étendre stp? je comprends pas pk tu dis ca, ce que ca change kwa.

8. Base.cpp ligne 40. Utilise ++ _Pair au lieu de _Pair ++, c'est une bonne habitude ça peut être que plus rapide.

pas d'accord, au pt de vue asm ca restera tjs "inc ma_variable"

merci pr tes commentaires...
++
ad
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
Salut,
alors quelques remarques dans le désordre de la lecture des sources.

1. On n'ouvre jamais un namespace dans un include
cf Image.h lign 16.

2. Un destructeur de classe non virtuel ne faisant rien... autant pas le mettre.

3. Le constructeur Image( char*, int ) devrait être en fait Image( const char*, int ) sinon un compilo moderne te fera au moins un warning sur quelque chose du genre Image img( "img.jpg", 1 );
"imp.jpg" étant un const char[] en C++.

4. Tes accesseurs devraient être const ( cf Image.getTaille )

4. Tu devrais prendre le réflexe d'initialiser tes variables de classe comme suit :
Image::Image() : _Taille( 0 ) {}
et pas
Image::Image() { _Taille = 0; }
// Idem pour pour l'autre constructeur

C'est mieux pour certains objets (je ne m'étends pas).

5. Image.cpp ligne 61. pourquoi utilises-tu compare
au lieu d'un simple == ?

6. Pour un tuto sur la STL, tu aurais pas utiliser for_each
pour ta fonction VersMinuscule.

7. Base.cpp lign 40. Tu devrais passer une référence constante de Database au lieu d'une copie probable.

8. Base.cpp ligne 40. Utilise ++ _Pair au lieu de _Pair ++, c'est une bonne habitude ça peut être que plus rapide.

9. Base.cpp ligne 89, 93. Tu pourrais ne faire qu'un appel à equal_range. genre
pair< Database::iterator, Database::iterator > found
= _Base.equal_range( ... )
if ( found.first == found.end() )
...

Voilà en gros sans trop rentrer dans les détails.
A+

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_petifa)