Classe pile&tableau generique

Soyez le premier à donner votre avis sur cette source.

Vue 5 460 fois - Téléchargée 422 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

Cyberboy2054
Messages postés
173
Date d'inscription
jeudi 20 décembre 2001
Statut
Membre
Dernière intervention
22 août 2008
-
Manque juste quelques fonctions genre algo de tri, mais j aime bien ta source lol, moi aussi j ai recodé ce genre de classes (ya que std::string que j aime dans la stl...)
cs_djl
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
5 -
oui c'est vrai, c'est a completé (c'etait just l'idee)

toi aussi tu a vu que ca valais le coup de recoder ces classes de la stl
si ca t'interresse et que ta vc++, regarde les sources des carray des mfc, c assez bien foutu au niveau optimisation

d'accord pour les string, difficile de faire mieux de meme pour les allgorithme de la stl
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;
cs_djl
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
5 -
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
-
la plupart des implémentations de templates que j'ai vu allient déclarations et définitions :

template < ... >
class x
{
void methode()
{
...
}
}

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.