Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1535 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  tableau 2D dynamique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

tableau 2D dynamique

n°2170910
wuxiaowei
Posté le 13-01-2013 à 12:13:03  profilanswer
 

Bonjour...
 
j'ai créé un tableau 2D dynamique du type d'une de mes classes. le types contient un int et un char(qui sont des attributs private de la classe Ordi).  
Le tableau en question a pour dimension h * l (que j'ai défini au préalable).
 
     Ordi **tab = new Ordi*[h];
          for(int i=0;i<h;++i)
          tab[i]=new Ordi[l];
 
    for (int i = 0; i < h; ++i)
      delete[] tab[i];
      delete[] tab;
     
 
je me demande comment initialiser par defaut toutes les cases de mon tableau au valeurs  :  (12,"X" )
De plus, mon tableau est il effectivement dynamique ?
Votre aide sera la bienvenue  :jap:


Message édité par wuxiaowei le 13-01-2013 à 12:26:09
mood
Publicité
Posté le 13-01-2013 à 12:13:03  profilanswer
 

n°2170915
crom29
Posté le 13-01-2013 à 13:24:50  profilanswer
 

Ton tableau n'est pas dynamique, dans le sens où la longueur max de ton tableau est limité par sa taille à l'initialisation.
Un tableau dynamique c'est un tableau où tu peux à tout moment, sans limite. Par exemple un vector est un tableau dynamique, un Ordi tab[h] est un tableau statique, même si il est initialisé dynamiquement
 
En c++11 il y a moyen d'initialiser des tableaux de struct avec des accolades, mais je n'ai jamais vraiment regardé...
Essaye de regarder par là : http://www.cplusplus.com/reference [...] izer_list/ ;)


---------------
Mods: HAF922 | Shinobi XL White    GitHub     Admin de La Colère d'Aurile, serveur RP-Action Neverwinter Nights 2
n°2170916
wuxiaowei
Posté le 13-01-2013 à 13:53:18  profilanswer
 

bon j'ai utlisé vector pour recréer mon tableau. je doute de la bonne application.
 
vector<Ordi> tab(hauteur*largeur) ;
    tab.push_back(Ordi(12,"X" ));
 
Je pesne que le tableau est donc dynamique ? mais est ce comme ça qu'on initialise les cases ? :/
 

n°2170917
Farian
Posté le 13-01-2013 à 14:04:22  profilanswer
 

Non, là vous ne faites qu'ajouter un élément.
 
Mais vous pouvez utiliser le constructeur qui remplit les valeurs :  
 

Code :
  1. std::vector<Ordi> tab(largeur*hauteur, Ordi(12, "X" ));

n°2170918
wuxiaowei
Posté le 13-01-2013 à 14:20:05  profilanswer
 

Grille:Grille(int hauteur,int largeur)
{
   hauteur=18,largeur=6;
 
    vector<Ordi> tab(hauteur*largeur) ;
 
    std::vector<Ordi> tab(hauteur*largeur, Ordi(12,"X" ));
 
 
}
 
un constructeur dans un constructeur :s
 
 la ligne vector<Ordi> tab(hauteur*largeur) ;   cré bien un tableau dynamique ? ou j'ai loupé une étape ?
et pour l'initialisation je ne comprend rien. google n'est plus mon ami...

n°2170922
gilou
Modérateur
Modzilla
Posté le 13-01-2013 à 15:15:42  profilanswer
 

Deux possibilités, si les 2 dimensions sont necessaires:
Soit ton tableau a des dimensions que tu ne connais pas a la compilation, mais qui sont déterminées à la création et qui ne bougent plus, et tu as le conteneur standard std::array pour cela, soit ton tableau a des dimensions qui bougent parce qu'on lui rajoute/enlève des éléments, et tu as (entre autres) le conteneur std::vector pour cela, soit une des dimensions est fixée et pas l'autre, et tu peux employer un mix des deux.
Donc dans un cas:
On va créer un vecteur de h vecteurs sur l Ordi
std::vector<std::vector<Ordi> > tab(h, std::vector<Ordi>(l));
et dans l'autre cas:
On va créer un array de h arrays de l Ordi
std::array<std::array<Ordi, l>, h> tab;
ou avec une allocation sur le tas
std::array<std::array<Ordi, l>, h >& tab = *new std::array<std::array<Ordi, l>, h >;
 
On peut alors dans les deux cas accéder aux éléments comme tab[i][j] si necessaire.
 
Dans le cas de std::array, il faut que le compilo ait le flag pour être en mode C++11 (-std=c++11 avec g++) et que h et l soient const.
 
A+,


Message édité par gilou le 13-01-2013 à 15:18:21

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  tableau 2D dynamique

 

Sujets relatifs
Tableau :/Comment initialiser un tableau 2 dimensions de manière dynamique ?
Opérations sur les valeurs d'un tableauun algo qui supp le min et le max d'1 tableau à la fois SVP
[c][Transfer de donnees d´un tableau bidimensionel vers unidimensione][c][Lire et ecrire dans un tableau de caracteres en dimension 2]
Un tableau est-il un objet ?Tri dynamique
tableau 2D dynamiqueTableau dynamique 2D
Plus de sujets relatifs à : tableau 2D dynamique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR