Enum dynamique en c++

nidhaletec Messages postés 44 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 28 mars 2009 - 16 févr. 2009 à 08:52
manudiclemente Messages postés 14 Date d'inscription vendredi 14 mai 2010 Statut Membre Dernière intervention 9 mars 2011 - 15 mai 2010 à 20:13
comment je definis une enumeration en C++ avec des valeurs que je ne les obtiens que d'une facon dynamique ?

4 réponses

BunoCS Messages postés 15330 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 novembre 2022 103
16 févr. 2009 à 09:22
Salut,
Il n'est pas possible de construire un enum dynamiquement. Je te conseilles donc un tableau, un vecteur, ou bien une map, tout dépend de ce que tu veux faire

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
nidhaletec Messages postés 44 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 28 mars 2009
16 févr. 2009 à 09:37
Merci pour ta reponse;
voila le un exemple qui ressemble au code que je suis en trai de l'ecrire :



enum nodes {
    Troy, LakePlacid, Plattsburgh, Massena, Watertown, Utica,
    Syracuse, Rochester, Buffalo, Ithaca, Binghamton, Woodstock,
    NewYork, N
  };
  const char *name[] = {
    "Troy", "Lake Placid", "Plattsburgh", "Massena",
    "Watertown", "Utica", "Syracuse", "Rochester", "Buffalo",
    "Ithaca", "Binghamton", "Woodstock", "New York"
  };
  location locations[] = { // lat/long
    {42.73, 73.68}, {44.28, 73.99}, {44.70, 73.46},
    {44.93, 74.89}, {43.97, 75.91}, {43.10, 75.23},
    {43.04, 76.14}, {43.17, 77.61}, {42.89, 78.86},
    {42.44, 76.50}, {42.10, 75.91}, {42.04, 74.11},
    {40.67, 73.94}
  };
  edge edge_array[] = {
    edge(Troy,Utica), edge(Troy,LakePlacid),
    edge(Troy,Plattsburgh), edge(LakePlacid,Plattsburgh),
    edge(Plattsburgh,Massena), edge(LakePlacid,Massena),
    edge(Massena,Watertown), edge(Watertown,Utica),
    edge(Watertown,Syracuse), edge(Utica,Syracuse),
    edge(Syracuse,Rochester), edge(Rochester,Buffalo),
    edge(Syracuse,Ithaca), edge(Ithaca,Binghamton),
    edge(Ithaca,Rochester), edge(Binghamton,Troy),
    edge(Binghamton,Woodstock), edge(Binghamton,NewYork),
    edge(Syracuse,Binghamton), edge(Woodstock,Troy),
    edge(Woodstock,NewYork)
  } ;
 
c'est une partie d'un code qui cherche la distance minimale entre deux villes.
Mais le code que je cherche a realiser cherche la distance minimale entre deux noeuds d'une carte d'OpenStreetMap.
Donc l'idee est au lieu de ces noms de ville j'ecris N+le ID des noeuds(par exemple : N256) que je l'ai obtiens que d'une facon iterative et qui peuvent etre modifies aussi
0
BunoCS Messages postés 15330 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 novembre 2022 103
16 févr. 2009 à 09:45
Je ne vois pas pourquoi tu as besoin d'enum. Tu peux dire que "N+ID" est stockée dans une chaine de caractères et du coup, tu gardes le prototype de name[]

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
manudiclemente Messages postés 14 Date d'inscription vendredi 14 mai 2010 Statut Membre Dernière intervention 9 mars 2011
15 mai 2010 à 20:13
N'oubliez pas que les enum ne servent qu'à donner un "nom" à un entier.

enum{vrai, faux};
//équivaut à
const int vrai = 0;
const int faux = 1;

Ça ne sert qu'à l'édition et l'utilisation du code.
A l'exécution, la notion d'enum n'existe pas.

Pour calculer les distances, il faut passer par des algorithmes mathématiques.
0