Liste d'éléments (comme des String) en VC++.Net (2003)

Signaler
Messages postés
27
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
4 juin 2006
-
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013
-
Bonjour,

Je souhaiterais créer une liste de String (tableau de taille variable).
Je pourrais utiliser une ArrayList mais j'obtiens un problème de cast (il faut changer le type des objets à chaque appel).

Comment pourrais-je faire ? Hériter de ArrayList ?

Débutant en prog, merci de donner si possible un bout de Code du type :

class StringList : public ArrayList
{
...
}

PS : Je voudrais aussi l'utiliser de manière plus générale avec mes propres classes (ex class Element -> class ElementList)

Merci encore de votre aide et bonnes fêtes à tous

4 réponses

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Crées toi un tableau a deux dimensions.

Exemple:
char *[1024];

Tu y ajoutes et y soustrait tes éléments au fur et a mesure.
Le mieux est de se faire une class qui gere ca a la maniere des liste simplement chaînées.

Shell
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Pour faire plus simple, tu peux aussi gérer un tableau unidimensionnel de string

Exemple:
string[1024];


Cependant, les types primitifs restent toujours les plus souples et plus puissants.

Shell
Messages postés
27
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
4 juin 2006

Non, je voudrais utiliser les classes managées plus simples comme ArrayList, je me demandais s'il existait un moyen de préciser le type des éléments.
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013

Dans la globalitee, quand tu veut creer une liste d'éléments persos, tu utilise un liste chainée ou double chainée. Pour le cas ou tu ne sais pas ce que c'est je te fait un petit exemple en speed :

class CList
{
CList *Next;
CList *Prev; //Si la liste est double chainée
long ID; //Facultatif, mais util pour des recherche rapides

Element Elt;
public:
////////////
//Methodes//
////////////
};

Le but c'est d'allouer un premier élément lors du construteur, ensuite via une methode d'ajout tu ajoute tes éléments dynamiquement.pour l'allocation de 3 élément voici ce que tu doit obtenir :

A B CNext &B Next &C Next = NULLPrev NULL Prev &A Prev = &B <-Pour liste double chainee
Il est possible aussi (mais judicieux ?) de boucler ta chaine (A.Prev &C, C.Next &A)

Pour les methodes il faut bien evidemment allouer les nouveau elements, penser a tous les detruire lors du destructeur. Des fonction pour obtenir/modifier l'element possédant un ID particulier peuvent être très pratique pour ne pas dire indispensable. Enfin, il est judicieux de surcharger l'operateur [] pour utiliser ta liste comme un tableau ce qui est très pratique.

Le travail c'est la santé, ne rien faire c'est la préservé !!!