Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

NLIST ( TEMPLATE )


Information sur la source

Catégorie :Divers Classé sous : template, liste, simple, chaîné, générique Niveau : Initié Date de création : 09/08/2003 Date de mise à jour : 18/05/2007 01:56:45 Vu / téléchargé: 3 067 / 69

Note :
6 / 10 - par 1 personne
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

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

  • 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 ...
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 && @++;
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   nlist
    • Debug
    • Release
    • main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 539 octets
    • nlist.dspTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 420 octets
    • nlist.dswTélécharger ce fichier [Réservé aux membres club]Voir ce fichier533 octets
    • nlist.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier12 551 octets
    • nlist.ncbTélécharger ce fichier [Réservé aux membres club]50 176 octets
    • nlist.optTélécharger ce fichier [Réservé aux membres club]48 640 octets
    • nlist.plgTélécharger ce fichier [Réservé aux membres club]1 214 octets

Télécharger le zip

Historique

18 mai 2007 01:56:45 :
ajout des mots clés( Vous aussi, mettez vos sources à jour !!! Ajoutez les mots clés !!! )

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Liste chainée en C++ sans STL (ni vector ni template) [ par Tamahome ] Bonjour,je cherche un exemple de liste chainée (sans STL: ni vector ni template) enC++ (pas en C) permettant de chainer des objets héterogenes (par ex template- au secours [ par toddy_101 ] bonjour tout le monde, j'ai un probleme au niveau des templates, ca bloke au niveau du linkage!! voici la declaration de la classe , et des methodes: classe template [ par mimosa803 ] bonsoir à tous , bon j'ai fait une fait une classe file générique (avec une classe noeud générique).Je veux tester cette classe en faisant file&lt;com liste chainée et pointeur générique ? [ par tintin72 ] Bonjour, J'essaie de coder une liste chainée dont la valeur à stockée est matérialisé par un pointeur sur void de façon rendre mon code générique: classe avec liste simple [ par Olive512005 ] Bonjour ,je voudrais avant tout remercier pour les réponses que j'ai eu à propos du tableau. voila j'ai un petit problème à résoudre encore, il faud liste simple [ par Crib ] BonjourEst il possible d'avoir un moyen d'inserer à la fin d'une liste simple Nig-K Liste chainée Template maillon externe [ par Timidouveg ] Bonjour :)Je n'ai pas compris comment fonctionne les template. J'ai cherché des explications sur internet, mais j'avoue que ça m'échappe un peu :sJe s Liste comportant une classe template [ par horcks ] Bonjour, J'aurais voulu savoir s'il est possible de créer une liste contenant une classe template. Je m'explique : Voici le code (écourté) du template svp j'ai besoin de votre aide pour trouver la transformation de cette gammaire pour pouvoir efffectuer une analyse syntaxique par descente prédictive [ par saimouma ] p <span lang="EN-US" style="FONT-FAMILY: Wingdings; mso-ascii-font-family: Calibri; mso- Probleme d'ajout de chaine de caractere dnas une liste box [ par Zock ] Bonjour a tous ceux qui liront ce post,Alors voila j'ai un petit soucis avec une de mes applications, il me semble que c'est du .NetEx :checkedListBox


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,827 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.