Comment initialiser un tableau 2 dimensions de manière dynamique ?

Comment initialiser un tableau 2 dimensions de manière dynamique ? - C++ - Programmation

Marsh Posté le 08-01-2013 à 13:27:14    

Bonjour à tous,
 
dans le cadre d'un devoir, je dois initialiser la hauteur et la largeur à 9 et 15 dans mon constructeur par défaut et je dois initialiser un tableau à deux dimension "tab" de manière dynamique à ces dimensions.
Après avoir fait quelques recherches sur Internet, je n'arrive pas à trouver d'exemples concret.
Voici mon constructeur par défaut vide.
 
Plateau::Plateau (const int h=9, const int l=15)
{
     
}
 
Comment dois-je m'y prendre ?
Merci d'avance

Reply

Marsh Posté le 08-01-2013 à 13:27:14   

Reply

Marsh Posté le 08-01-2013 à 16:45:59    

Plateau::Plateau (const int h=9, const int l=15)  
: tab(l)
{
  for(size_t i=0;i<l;++i) tab[i].resize(h);
}
 
avec comme membre :
 
std::vector< std::vector<int> > tab;
 
 
int a remplacer par le bon type.

Reply

Marsh Posté le 08-01-2013 à 18:32:13    

Ben si tu as droit a la librairie standard, et en supposant que ton tableau est un tableau d'int (et qu'il aura besoin de changer de taille en cours de programme) tu pourrais faire:

Code :
  1. #include <vector>
  2. class Plateau {
  3. private:
  4.     std::vector<std::vector<int> > plateau;
  5.    
  6. public:
  7.     Plateau(const std::size_t n = 9, const std::size_t m = 15) : plateau(m, std::vector<int>(n)) {
  8.     }
  9.     // ...
  10. };


EDIT: grillé! (je faisais joujou avec std::array et les template class avec les deux tailles en paramètre comme alternative, mais ça m'a eu l'air moins pratique)
A+,


Message édité par gilou le 08-01-2013 à 18:42:52

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

Marsh Posté le 08-01-2013 à 19:19:54    

Ah merci pour beaucoup Joel et Gilou ! :D
J'avais pas pensé à déclarer un vecteur pour plateau !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed