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

  FORUM HardWare.fr
  Programmation
  C++

  push_back(new maClasse) dans un vector de vector

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

push_back(new maClasse) dans un vector de vector

n°1956457
sue soeur ​debeat
Posté le 09-01-2010 à 23:39:34  profilanswer
 

Hello
 
J'ai un soucis quand je veux remplir mon vector de vector avec des instances d'une classe.
 
Voici la déclaration:

Code :
  1. vector <vector<Pion>> tableau;


 
(Pion est une classe)
 
Et dans cette boucle je cherche à rajouter des instances de Pion dans tableau:
 

Code :
  1. for (int i=0; i<5; i++){
  2.  for (int j=0; j<5; j++){
  3.   this->tableau.push_back(new Pion); <- l'erreur est ici
  4.  }
  5. }


 
Le compilateur (Visual Studio 2008) me jette avec cette erreur:
[i]
\test.cpp(15) : error C2440: 'initialisation' : impossible de convertir de 'Pion *' en 'Pion'
1>        Aucun constructeur n'a pu prendre le type de source, ou la résolution de la surcharge du constructeur était ambiguë
 
Après plusieurs recherches je ne comprends toujours pas, la syntaxe push_back(new maClass) devrait marcher  :??:


Message édité par sue soeur debeat le 09-01-2010 à 23:39:58
mood
Publicité
Posté le 09-01-2010 à 23:39:34  profilanswer
 

n°1956473
Joel F
Real men use unique_ptr
Posté le 10-01-2010 à 09:35:23  profilanswer
 

[:joel f:1] non. On est pas en java.

 

Ton vector de pion il contient des pions, pas des pion*.
Le message est plus qu'explicite sur ce point.

 

ref: http://www.cplusplus.com/reference [...] push_back/

 

Autre chose, vector <vector<Pion>> tableau; n'est pas un vrai tableau 2D.
Il faut donc l'initialiser en 2 fois.
Donc:

 
Code :
  1. vector <vector<Pion>> tableau;
  2. for (int i=0; i<5; i++)
  3. {
  4.    // Ajout nouveau tableau de pion
  5.    vector<Pion> p;
  6.    for (int j=0; j<5; j++)
  7.      p.push_back(Pion());
  8.   tableau.push_back(p);
  9. }
 

Cependant, la tu fais trop de copie inutile.

 

Mieux:

Code :
  1. vector <vector<Pion>> tableau(5);
  2. for(std::size_t i=0;i<tableau.size();++i)
  3.   tableau[i].resize(5);
 


Ensuite vector n'est pas optimal pour les tableaux 2D.
Mieux vaut utiliser boost::multi_array ou un tableau NRC 2D façon Knuth.


Message édité par Joel F le 10-01-2010 à 10:04:32

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

  push_back(new maClasse) dans un vector de vector

 

Sujets relatifs
utilisation de src dans un push sur un array.[Crypto] TripleDES - Initialization vector
où trouver un tuto pour shoutbox html ?vector et thread safe
vector libération mémoireback_insertor
vector de pointeur sur classe polymorphiqueChar vs Vector
Vector 3 dimensionvector contenant object utilisant polymorphisme, help
Plus de sujets relatifs à : push_back(new maClasse) dans un vector de vector


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