Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/05/2006, à 00:22

batteuryo

C++ comment creer N vector ayant N dans leur NOM ...

Bonjour à toutes et à tous, j'imagine que mon sujet n'est pas très explicite, mais j'avais du mal à trouver un bon intitulé.

Voila mon problème , j'ai besoin de creer N vecteur de unsigned ayant comme nom : V0, V1 ... VN-1

Voici une partie du code qui aurai pu fonctionner ...

int NbVector = 9; //Le nombre de vector à creer

for (unsigned i = 0; i < NbVector; ++i)
{
    vector <unsigned> QUE FAIRE;
}

Et là, que faire donc ??? Je ne peux pas mettre

vector <unsigned> Vi;

En d'autre langages on aurait pu faire

vector <unsigned> V$i;

par exemple mais ce n'est pas le cas en C++. malheuresement.

Est-ce que c'est possible éventuellement en passant par une macro ???

Quelque chose du type :

#define CreerVector(x) vector <unsigned> x

Mais le probleme semble rester le même.

Merci bien

Cordialement

Ps : désolé si le sujet a déja été traité sur un autre post, mais il est difficile de faire une recherche sur un problème que l'on ne sait pas nommer.;)

Dernière modification par batteuryo (Le 13/05/2006, à 00:23)


Je me demande dans quel etat j'ère ... ^^

Hors ligne

#2 Le 13/05/2006, à 14:18

Link31

Re : C++ comment creer N vector ayant N dans leur NOM ...

Je crois que tu ne peux pas déclarer des noms de variables "non explicites". Parce que le compilateur ne fait que compiler, et ne va rien exécuter. Il ne pourra donc pas évaluer V$i ou x pendant la compilation.

Une solution serait de créer deux tableaux, l'un contenant les noms de tes vector et l'autre les vector eux-mêmes. Ensuite lorsque tu crées un vector dans le tableau des vector, tu dois indiquer son nom dans le tableau des noms, en veillant à garder absolument la correspondance des indices de tableaux. Ensuite, tu peux accéder à un vector du tableau des vector avec le même indice que celui de son nom dans le tableau des noms (tu peux créer une fonction qui recherche le nom dans le tableau).

Bien entendu tableau=vector, c'était juste pour essayer d'être plus clair.

Ou alors une meilleure idée : créer une structure "struct" composée d'un nom et d'un vector, puis créer un vector <struct>. Comme ça il n'y a aucun risque de se tromper dans les indices.

J'espère que ce n'est pas trop confus wink (et que ce n'est pas faux parce que je débute en C++...)

Dernière modification par Link31 (Le 13/05/2006, à 14:21)

Hors ligne

#3 Le 13/05/2006, à 14:41

batteuryo

Re : C++ comment creer N vector ayant N dans leur NOM ...

Merci pour ta réponse Link31, c'est pas une mauvaise idée de creer une struct ou même une classe , j'y avait pensé, mais dans ce cas là, lorsque je vais creer mon objet, il sera composé d'un vector et d'un nom, mais mon objet il va bien faloir le nommer aussi ... et lorsque je vais le creer "à la volée" dans la boucle for(;;)  je serais dans le même cas que précédemment j'ai l'impréssion ...


Je me demande dans quel etat j'ère ... ^^

Hors ligne

#4 Le 13/05/2006, à 15:01

batteuryo

Re : C++ comment creer N vector ayant N dans leur NOM ...

Je vien de reflechir en mangeant .... big_smile et je pense que la meilleur solution (comme me l'avais conseilé un ami auparavan) serai d'utiliser un vector de pointeur de vector.
Cela rejoint un peu ton idée Link31

De ce fait pas besoin de nommer les vector V0, V1, V2 etc... je l'ai apellerais depuis leur position dans le premier vector.

Voila mais d'autre personne ont de meilleures idée, je suis preneur.


Je me demande dans quel etat j'ère ... ^^

Hors ligne

#5 Le 13/05/2006, à 19:18

lost-in-the-shell

Re : C++ comment creer N vector ayant N dans leur NOM ...

Eh ben l'allocation dynamique alors ?

tontype* taVariable = NULL;
taVariable = malloc(sizeof(tontype) * nbVariableACreer);
/* Tu fais tes modifications sur tes variables
par exemple taVariable[i]  = 2;*/
free(taVariable);

Je pense pas que ça réponde exactement à ta question mais bon, la culture c'est comme la confiture : moins on en a, plus on l'étale.


Linux user #401253 - Ubuntu user #3023 .
Nick sur IRC : naji.
Pensez à adhérer au Comité de lutte contre le SMS.

Hors ligne

#6 Le 13/05/2006, à 19:44

Amalsek

Re : C++ comment creer N vector ayant N dans leur NOM ...

A voir également les tables de hachage ( map et hash_map de la stl) qui permettent de faire correspondre un objet - la clef (genre chaine de caractère) à un autre...

lost-in-the-shell a écrit :

tontype* taVariable = NULL;
taVariable = malloc(sizeof(tontype) * nbVariableACreer);
/* Tu fais tes modifications sur tes variables
par exemple taVariable[i]  = 2;*/
free(taVariable);

J'veux pas être méchant, mais malloc et free en C++ on m'a tjrs dit que c'était pas bien ... wink

Dernière modification par Amalsek (Le 13/05/2006, à 19:46)

Hors ligne

#7 Le 13/05/2006, à 19:48

lost-in-the-shell

Re : C++ comment creer N vector ayant N dans leur NOM ...

P't'être bien, mais moi en C j'ai l'habitude de faire ça sans encombre. Peut-être t'a-t-on dit que malloc() tout seul c'était pas bien, et ça, c'est vrai big_smile

Dernière modification par lost-in-the-shell (Le 13/05/2006, à 19:49)


Linux user #401253 - Ubuntu user #3023 .
Nick sur IRC : naji.
Pensez à adhérer au Comité de lutte contre le SMS.

Hors ligne

#8 Le 13/05/2006, à 20:06

batteuryo

Re : C++ comment creer N vector ayant N dans leur NOM ...

Amalsek a écrit :

A voir également les tables de hachage ( map et hash_map de la stl) qui permettent de faire correspondre un objet - la clef (genre chaine de caractère) à un autre...

Ca m'interesse, tu pourais m'expliquer rapidement? A ce que j'ai compris, ces tables font correspondre les objet à leur nom ??? on peut y acceder comment ?


Je me demande dans quel etat j'ère ... ^^

Hors ligne

#9 Le 13/05/2006, à 22:45

ffomnislash

Re : C++ comment creer N vector ayant N dans leur NOM ...

std:list ou std:vector est une solution je pense wink

eviter les malloc en c++ svp big_smile


-- Mon blog --

Hors ligne

#10 Le 13/05/2006, à 23:16

NicoA380

Re : C++ comment creer N vector ayant N dans leur NOM ...

map<string,vector<tonTruc> > vectors;

//tu peux l'utiliser directement

vectors["V1"].push_back(tonTruc());

Recherche STL MAP sur google, tu trouveras plus de détail tongue les joies de la STL sont grands, mais les embuches nombreuses roll

Hors ligne

#11 Le 14/05/2006, à 21:08

lost-in-the-shell

Re : C++ comment creer N vector ayant N dans leur NOM ...

Je viens de lire http://www.via.ecp.fr/formations/2000-01/formcpp.html . Bon, je vois pas exactement les méfaits de malloc() et free() mais j'utiliserais quand même new et delete quand je compilerais en C++.
Néanmoins cette amélioration du C m'intrigue :

int a = 12;
  // a vaut 12

  int &b = a;
  // b vaut 12

  a = 42;
  // a et b valent 42

  b = 2;
  // a et b valent 2

Ca fait mal du premier coup, vous voyez...


Linux user #401253 - Ubuntu user #3023 .
Nick sur IRC : naji.
Pensez à adhérer au Comité de lutte contre le SMS.

Hors ligne

#12 Le 15/05/2006, à 10:54

Enjoy Aspirin

Re : C++ comment creer N vector ayant N dans leur NOM ...

lost-in-the-shell > j'ai peur d'être hs vu que je débute en C, mais qu'est-ce qui est intriguant ?
lorsque tu fais int& b=a tu crées une nouvelle référence vers a
donc a et b sont des références totalement identiques
(et b n'est pas un pointeur hein ?)
ca va pas plus loin non? enfin je ne sais pas trop !:lol:

Dernière modification par Enjoy Aspirin (Le 15/05/2006, à 10:54)

#13 Le 15/05/2006, à 14:25

lost-in-the-shell

Re : C++ comment creer N vector ayant N dans leur NOM ...

C'est justement ce passage si brusque de référence à pointeur qui m'intrigue hmm


Linux user #401253 - Ubuntu user #3023 .
Nick sur IRC : naji.
Pensez à adhérer au Comité de lutte contre le SMS.

Hors ligne