bonjour à tous !
Voilà je me suis fais une petite classe qui me sert à faire une pile fifo (First In First Out).
Les utilisations peuvent être diverses, pour ma part je l'utilise pour récupérer les n dernières lignes d'un gros fichier (> 20Go).
On peu facilement l'ajouter par exemple dans une pile de connection, d'instructions, etc.
A noter que c'est une pile d'object et donc que la valeur à retourner sera à caster.
public class PileFifo
{
int iTaille = 0;
int curseur = 0;
object[] maPile;
public PileFifo(int taille)
{
if(taille <= 0)
throw new Exception("erreur : la taille paramétrée doit être supérieur à 0");
iTaille = taille;
maPile = new object[iTaille];
}
public object add(object o)
{
if (curseur == iTaille)
{
object toReturn;
curseur--;
toReturn = maPile[curseur];
for (int i = curseur; i > 0; i--)
{ maPile[i] = maPile[i - 1]; }
maPile[0] = o;
curseur++;
return toReturn;
}
else
{
for (int i = curseur; i > 0; i--)
{ maPile[i] = maPile[i - 1]; }
maPile[0] = o;
curseur++;
return null;
}
}
public object get()
{
if (curseur == 0) return null;
object toReturn = maPile[curseur-1];
maPile[curseur-1] = null;
curseur--;
return toReturn;
}
public object[] getAll()
{ return maPile; }
}
Si vous avez des commentaires, amélioration, etc. je suis preneur ;)
Naga
14 nov. 2013 à 14:51
c'est justement pas ce que je veux dans mon code actuel.
14 nov. 2013 à 14:42
D'autre part d'un point de vue pédagogique c'est beaucoup plus intéressant car ca permet d'en comprendre le fonctionnement (bien que certains préfèrent, comme c'est apparemment le cas de pas mal de personnes, s'appuyer sur des choses sans tilter ce qui se passe).
De plus, ca permet de pouvoir faire des modification non prévu par les classes fournies plutôt que surcharger un résultat.
Enfin, le code, avec quelques légères modifications, est portable facilement pour un autre langage.
Et juste comme ca, j'ai eu un soucis avec un streamWriter qui plantait à cause d'une taille de buffer et aucuns moyens de gérer l'exception. J'ai refais une méthode d'écriture (je ne suis pas descendu plus bas que le stream) et maintenant je peux gérer mon exception. Donc oui, dans un monde parfais les classes .net sont optimisées aux mieux quelque soit le cas, mais c'est pas le cas.
bref balancer un lien à la c** parcequ'on sait pas argumenter, aucuns interêt. Par contre je suis d'accord pour dire qu'il faut utiliser les bibliothèques fournis si on comprend ce qu'elle fait.
14 nov. 2013 à 13:57
http://fr.thedailywtf.com/Comments/Trop-de-fonctions-%28T%29.aspx
12 nov. 2013 à 07:58
Car de cette manière les gens peuvent comprendre le fonctionnement, et ca permet de mieux gérer ses variables je trouve. Ensuite, ces listes sont beauuuuuuucoup plus lourdes que la mienne (car bien sûr avec beaucoup plus de fonctions qui, dans le cas actuel, ne me sont absolument pas utiles).
Et bon, je l'avoues, je préfère faire les outils plutôt que m'appuyer dessus, je préfère comprendre tout le fonctionnement de mon code le plus possible.
(c'est d'ailleurs un peu pour cette raison que j'évite d'utiliser windev)
naga
11 nov. 2013 à 22:48
Pourquoi ne pas utiliser la classe générique System.Collection.Generic.Stack<T> ou Queue<T> ?
http://msdn.microsoft.com/fr-fr/library/system.collections.stack%28v=vs.110%29.aspx
http://msdn.microsoft.com/fr-fr/library/7977ey2c%28v=vs.110%29.aspx
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.