Classe pile&tableau generique

Soyez le premier à donner votre avis sur cette source.

Vue 5 537 fois - Téléchargée 430 fois

Description

un exemple de classe pile generique qui permet d'enpiler/depiler des elements du type souhaité
en principe redefinir ce genre de conteneur c'est surtout pour optimiser, la classe tableau est 50% plus rapide que vector en acces, mais bien moins complete et pratique, on peux tj rajouter des trucs

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_djl
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
oui c'est vrai, mais ca depend

par exemple, la je suis entrain de regarder les carray (equivalent MFC de std::vector)
la c'est plutot

template<...>
class x
{
void method();
...
};

// definition methode inline
...
// definition methode out of line
template<...> x::methode()
{
...
}

mais dans tt les cas c'est la meme chose, sauf que c'est d'autant plus clair a regarder ainsi

en tt cas merci de m'avoir fait remarquer mes erreurs
BlackGoddess
Messages postés
338
Date d'inscription
jeudi 22 août 2002
Statut
Membre
Dernière intervention
14 juin 2005

(oublié le ; a la fin)
BlackGoddess
Messages postés
338
Date d'inscription
jeudi 22 août 2002
Statut
Membre
Dernière intervention
14 juin 2005

la plupart des implémentations de templates que j'ai vu allient déclarations et définitions :

template < ... >
class x
{
void methode()
{
...
}
}
cs_djl
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
ben pour les destructeur virtuel, j'ai choisi de ne pas faire d'interfce virtuel pour ces classes, c'est le cas de std::vector entre autre

oui le __fastcall n'est pas standard mais la c'est pas le but, je vois mal comment allié code standard + perf

pour l'operateur [], en effet je verifie pas pour pas perdre de temps, par contre je le fait avec la methode ind, std::vector fait la meme avec la methode elementAt

pour la version const, je vais l'ajouter, merci

aussi j'ai foutu les definition dans des .cpp et c'est une erreurs, quoi qu'il en soit tu a raison, ca doit se trouver dans un fichier entete, mais pas forcement l'entete meme de la classe du moment qu'il est inclu

pour la forme je dirai qu'il est plus propre de faire genre

stack.h ==> declaration
stack.tpl ==> definition des methode, le fichier doit etre inclus (ala fin de stack.h par ex)

en fait comme on ferait la meme chose avec les fichier .inl pour mettre la definition des methodes inline
BlackGoddess
Messages postés
338
Date d'inscription
jeudi 22 août 2002
Statut
Membre
Dernière intervention
14 juin 2005

il me semblait qu'une classe template devait être définie (et pas seulement déclarée) dans chaque unité de compilation ?
il est conseillé de mettre tes destructeurs virtuels si tu veux permettre de dériver tes classes
__fastcall n'est pas standard


sinon, pour stack :
element devrait p-e être déclaré en privé dans stack ?

pour tableau :

inline Type& __fastcall operator [] (int ind)
{
return m_Ttab[ind];
}
>> pas de vérification de dépassement ???? c'est pourtant un des interêts majeurs d'une telle classe

et la version const ?

const Type & operator [] (int ind) const;

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.