Accueil > > > NLIST ( TEMPLATE )
NLIST ( TEMPLATE )
Information sur la source
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 && @++;
Historique
- 18 mai 2007 01:56:45 :
- ajout des mots clés( Vous aussi, mettez vos sources à jour !!! Ajoutez les mots clés !!! )
Sources du même auteur
Sources de la même categorie
Commentaires et avis
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<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
héritage & template [ par rolm ]
Bonjour, J'aurai besoin d'un peu avec des tempates. En fait je voudrais créer une class qui hérite d'une class template mais d'un type donné. par e
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-
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|