cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 2004
-
23 mai 2004 à 14:31
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 2004
-
24 mai 2004 à 20:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_timinou
Messages postés29Date d'inscriptionmercredi 14 janvier 2004StatutMembreDernière intervention 5 mars 2007 24 mai 2004 à 20:13
donc dans le .C ça gene pas c'est ça?jvai regarder si j'en ai dans le .h tout de suite......
et jvai mettre a jour le code j'avais oublié de faire pas mal de trucs :-S
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 24 mai 2004 à 19:48
le using namespace std tu peux le mettre sans crainte dans le .C de la definition de la classe vu que c'est pre compiler
sinon comme dit Pamaury, ne met jamais de using namespace std dans le .h et utilise le prefixe std::, tu sais pas ce que ca peu impliquer
Pamaury
Messages postés341Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention17 juin 20083 24 mai 2004 à 18:38
juste un truc pas méchant mais plutôt que de fire
using namespace std
utilise std::
devant chaque truc(c'est un lourd parfois) mais si jamais tu fait le même prog avec une lib et qu'il y a des conflits, tu serra très content . Voila
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 23 mai 2004 à 19:05
ben c'est pas bon d'utiliser systematiquement endl, tu force l'affichage à chaque fois et tu le ralenti considerablement
c'est vrai que vu comme ca on voit pas la difference, mais c'est pas une bonne habitude
sinon utiliser endl sur cerr comprend que c'est comique vu que cerr n'est pas bufferisée, si tu ve une sortie erreur bufferisée utilise clog
cs_timinou
Messages postés29Date d'inscriptionmercredi 14 janvier 2004StatutMembreDernière intervention 5 mars 2007 23 mai 2004 à 18:59
merci à vous 2, jvè reprendre vos conseils et retaffer dessus un peu là.....
sinon std::memcpy jla connais pas officiellement donc jvai éviter..et les endl c'est comme ça qu'on m'a appris pour que se soit plus propre,peut etre que c'est rajouté mais c'est une philosophie j'y peu rien moi :-).....si vous avez d'autres conseils n'hesitez po !
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 23 mai 2004 à 16:23
sinon pour les copie de buffer utilise std::memcpy au lieu d'une boucle
pour les fichier #include <fstream> et pas #include <fstream.h> et ne les fermes pas, ca se fait tout seul à la sortie de la fonction
surtout supprime tout ces endl (utilise des '\n'), l'utilisation est carrement abusive
Cyberboy2054
Messages postés173Date d'inscriptionjeudi 20 décembre 2001StatutMembreDernière intervention22 août 2008 23 mai 2004 à 16:11
Autant la faire en template, comme ca ca peut resservir ....
et puis la fonction allongerpile ne servira probablement pas beaucoup comparée a un fonction qui permet de décider la future taille de la pile :
ou un truc comme, le code au dessus c' est juste pr montrer l' idée.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 23 mai 2004 à 14:31
const int ==> aucun effet
ne fait pas de cerr << ... <<endl, ca sert a rien et prend l'habitude avec cout de passer à la ligne avec '\n'
pour les indices des tableau pense à utiliser size_t au lieu de int
24 mai 2004 à 20:38
normalement le corps de la classe n'est que la meta-definition de la classe (la description en gros)
24 mai 2004 à 20:29
24 mai 2004 à 20:25
// Affichages
int afficherPriorite(int i) const {return (_tab[i]._priorite);};
std::string afficherNom(int i) const {return (_tab[i]._nom);};
par
// Affichages
int afficherPriorite(int i) const;
std::string afficherNom(int i) const;
24 mai 2004 à 20:22
#ifndef ____PILE_H_____
#define ____PILE_H_____
#include
#include <string>
class Pile {
public:
struct element
{
std::string _nom ;
unsigned short _priorite;
};
// Constructeurs et destructeur
Pile();
Pile(int);
Pile(const Pile & tmp);
~Pile();
Pile & operator = (const Pile & tmp);
void viderPile();
// Affichages
int afficherPriorite(int i) const {return (_tab[i]._priorite);};
std::string afficherNom(int i) const {return (_tab[i]._nom);};
void afficherPile();
friend std::ostream & operator << (std::ostream & affichage,const Pile & pile);
void allongerPile();
void empiler(std::string chaine,int priorite);
void sauvegarder() const;
void charger();
private:
int _taille;
int _longueur;
element * _tab;
};
inline int Pile::afficherPriorite(int i) const
{
return (_tab[i]._priorite);
}
inline std::string Pile::afficherNom(int i) const
{
return (_tab[i]._nom);
}
#endif // ____PILE_H_____
24 mai 2004 à 20:13
et jvai mettre a jour le code j'avais oublié de faire pas mal de trucs :-S
24 mai 2004 à 19:48
sinon comme dit Pamaury, ne met jamais de using namespace std dans le .h et utilise le prefixe std::, tu sais pas ce que ca peu impliquer
24 mai 2004 à 18:38
using namespace std
utilise std::
devant chaque truc(c'est un lourd parfois) mais si jamais tu fait le même prog avec une lib et qu'il y a des conflits, tu serra très content . Voila
23 mai 2004 à 19:05
c'est vrai que vu comme ca on voit pas la difference, mais c'est pas une bonne habitude
sinon utiliser endl sur cerr comprend que c'est comique vu que cerr n'est pas bufferisée, si tu ve une sortie erreur bufferisée utilise clog
23 mai 2004 à 18:59
sinon std::memcpy jla connais pas officiellement donc jvai éviter..et les endl c'est comme ça qu'on m'a appris pour que se soit plus propre,peut etre que c'est rajouté mais c'est une philosophie j'y peu rien moi :-).....si vous avez d'autres conseils n'hesitez po !
23 mai 2004 à 16:23
pour les fichier #include <fstream> et pas #include <fstream.h> et ne les fermes pas, ca se fait tout seul à la sortie de la fonction
surtout supprime tout ces endl (utilise des '\n'), l'utilisation est carrement abusive
23 mai 2004 à 16:11
et puis la fonction allongerpile ne servira probablement pas beaucoup comparée a un fonction qui permet de décider la future taille de la pile :
void Pile::resize(int size)
{
Pile tmp(size);
tmp._longueur=_longueur;
for (int i=0; i<size; i++)
tmp._tab[i]=_tab[i];
*this=tmp;
_taille=tmp._taille;
_longueur=tmp._longueur;
delete [] tmp._tab;
}
ou un truc comme, le code au dessus c' est juste pr montrer l' idée.
23 mai 2004 à 14:31
ne fait pas de cerr << ... <<endl, ca sert a rien et prend l'habitude avec cout de passer à la ligne avec '\n'
pour les indices des tableau pense à utiliser size_t au lieu de int
pour l'operateur = ta une grosse fuite
Pile & Pile::operator = (const Pile & tmp) {
if (this==&tmp) return *this;
delete[] _tab;
_tab=new element[tmp._taille];
_taille=tmp._taille;
_longueur=tmp._longueur;
for(int i=0;i<_longueur;i++) {_tab[i]=tmp._tab[i];}
return *this;
}