Nlist ( template )

Description

Une simple petite class template. Je n'avait jamais codé de template en C++ et maintenant j'en ai fait un alors le voilà! C'est très simple, il y à des commentaires partout ;) Je vous laisse avec le source && @++;

Source / Exemple :


Voilà le contenue du fichier   main.cpp(l'exemple d'utilisation)

#include <iostream.h>
#include <string.h>
#include <windows.h>
#include "nlist.h"

int main()
{

// Pour calculer le temp d'exécution ...
DWORD dwStart = 0;
DWORD dwEnd = 0;

// utilisé pour lister les éléments de la liste
int i = 0;
// instancie notre class, dans l'exemple, j'utilise des char*
// et limite la taille de la liste à 4 éléments
// plist est maintenant notre nouvelle instance(copie) de NList
// Une liste de char* limité à 4 éléments maximum
//
// Démarre le calcule du temp d'exécution à partir de l'instanciation
dwStart = GetTickCount();
NList<char*, 4> plist;

	// ajoute des éléments dans la liste
	plist.AddItem("NitRic\0");
	plist.AddItem("WebSoftDev\0");
	plist.AddItem("Web Software Development Inc.\0");
	plist.AddItem("All Rights Reserved © 2003 WebSoftDev Inc.\0");

	cout << "Listing des elements:\n";
	// liste tous les éléments de la liste
	for ( i = plist.begin(); i <= plist.end(); i++ ) {
		cout << i << " - " << (char*)plist.GetItem(i) << "\n";
	}
	/* c'est une autre facon de lister ;)
	cout << (char*)plist.GetItem(0) << "\n";
	cout << (char*)plist.GetItem(1) << "\n";
	cout << (char*)plist.GetItem(2) << "\n";
	cout << (char*)plist.GetItem(3) << "\n";

  • /
// Notre liste, c'est une liste de char*, donc pour connaître la longueur d'un élément // on utilise strlen() pour des chaines cout << "\nLongueur de l'element 0: " << strlen(plist.GetItem(0)) << " caractere(s)\n"; // affiche le nombre d'élément dans la liste cout << "Nombre d'elements dans la liste: " << plist.end() << "\n"; // trouve l'index d'un élément X cout << "L'index de l'element 'WebSoftDev' est: " << plist.GetIndex("WebSoftDev\0") << "\n"; cout << "Nombre d'element apres suppression de l'element 1: "; // supprime un élément de la liste plist.RemoveItem(1); // affiche le nombre d'éléments de la liste cout << plist.end() << "\n"; // affiche le contenue de l'élément 1 cout << "L'element 1 est maintenant: " << plist.GetItem(1) << "\n"; cout << "Ajout d'un item a l'emplacement 1\n"; // ajout un élément à la position 1 dans la liste plist.AddItem("New Item\0", 1); cout << "\nListing des elements:\n"; // refait un listing des éléments de la liste plist.MoveTo(0); // Ou, plist.MoveFirst(); do { cout << plist.GetIndex() << " - " << (char*)plist.GetItem() << "\n"; } while ( plist.MoveNext() != -1 ); /* for ( i = plist.begin(); i <= plist.end(); i++ ) { cout << i << " - " << (char*)plist.GetItem(i) << "\n"; }
  • /
/* même chose que plus haut ... cout << (char*)plist.GetItem(0) << "\n"; cout << (char*)plist.GetItem(1) << "\n"; cout << (char*)plist.GetItem(2) << "\n"; cout << (char*)plist.GetItem(3) << "\n";
  • /
// comparer 2 éléments ... cout << "\nL'element 1 est identique a l'element 2?: " << plist.compare(plist.GetItem(0), plist.GetItem(1)) << "\n"; cout << "L'element 1 est identique a l'element 1?: " << plist.compare(plist.GetItem(1), plist.GetItem(1)) << "\n"; cout << "\n"; // vide la liste, c'est optionnel, si vous ne la vider pas, elle ce videra elle même ... //cout << plist.MoveFirst() << "\n"; // pour des testes seulement mais fonctionnel //cout << plist.MoveLast() << "\n"; // pour des testes seulement mais fonctionnel plist.Empty(); dwEnd = GetTickCount(); // Affiche le temp d'exécution total à l'écran cout << "Temp d'execution total: " << (dwEnd-dwStart) << " milli sec\n\n"; // le programme c'est bien terminé alors on renvoie 0 return EXIT_SUCCESS; } Note: Le fichier "nlist.h" ne contient absolument aucun .h, il n'y à aucun include ... Sur mon PC(AMD K7 550 mhz avec 256 de ram et plus de 350 mo d'utilisé ;)) le temp d'exécution est de 0.00 milli sec ...

Conclusion :


Développé et testé sous VC++ 6 et Windows 2000 Pro seulement mais 'devrait' bien fonctionner avec les autres compilateurs C++ Win32 et
'je croit' qu'il pourrait fonctionner sous Linux aussi mais il faudrait enlever le
calcule du temp d'exécution ou le remplacer(windows.h, GetTickCount(), ...)

Sur ce, beubye && @++;

Codes Sources

A voir également

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.