Je cherche à créer un tableau 3 dimensions
de pointeurs sur un objet :
Objet *tab[][][]
pour lequel les dimensions sont dynamiques
Objet *tab[][][] = new Objet *[i][j][k] ???
(Meme en statique je n'y arrive pas)
Objet *tab[][][] = new Objet *[2][3][5] ???
Je cherche à créer un tableau 3 dimensions de pointeurs sur un objet : Objet *tab[][][]
pour lequel les dimensions sont dynamiques Objet *tab[][][] = new Objet *[i][j][k] ??? (Meme en statique je n'y arrive pas) Objet *tab[][][] = new Objet *[2][3][5] ???
Quelqu'un peut-il m'aider?
std::vector< std::vector< std::vector< Objet* > > > tab( i, std::Vector< std::vector< Object* > >( j, k ) ;
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Carine Modolo <modolo@emi.u-bordeaux.fr> wrote in message
news:<3FCB1930.6E5F1040@emi.u-bordeaux.fr>...
Je cherche à créer un tableau 3 dimensions de pointeurs sur un objet :
Objet *tab[][][]
pour lequel les dimensions sont dynamiques
Objet *tab[][][] = new Objet *[i][j][k] ???
(Meme en statique je n'y arrive pas)
Objet *tab[][][] = new Objet *[2][3][5] ???
Quelqu'un peut-il m'aider?
std::vector< std::vector< std::vector< Objet* > > >
tab( i, std::Vector< std::vector< Object* > >( j, k ) ;
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Je cherche à créer un tableau 3 dimensions de pointeurs sur un objet : Objet *tab[][][]
pour lequel les dimensions sont dynamiques Objet *tab[][][] = new Objet *[i][j][k] ??? (Meme en statique je n'y arrive pas) Objet *tab[][][] = new Objet *[2][3][5] ???
Quelqu'un peut-il m'aider?
std::vector< std::vector< std::vector< Objet* > > > tab( i, std::Vector< std::vector< Object* > >( j, k ) ;
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Vincent Lascaux
std::vector< std::vector< std::vector< Objet* > > > tab( i, std::Vector< std::vector< Object* > >( j, k ) ;
Quel est le constructeur appelé dans l'expression std::Vector< std::vector< Object* > >( j, k ) ? Dans la MSDN, j'ai trouvé cette liste des constructeurs :
Les deux seuls constructeurs à deux parametres sont : - celui qui prend la taille et un const Type& (mais k n'est pas un std::vector<Objet*> car le constructeur est explicit) - celui qui prend des iterateurs. Celui là pourrait etre appelé sur des entiers, mais je ne pense pas que ca compile (parceque l'operateur * unaire sur un entier n'est pas définit).
-- Vincent
std::vector< std::vector< std::vector< Objet* > > >
tab( i, std::Vector< std::vector< Object* > >( j, k ) ;
Quel est le constructeur appelé dans l'expression std::Vector< std::vector<
Object* > >( j, k ) ? Dans la MSDN, j'ai trouvé cette liste des
constructeurs :
Les deux seuls constructeurs à deux parametres sont :
- celui qui prend la taille et un const Type& (mais k n'est pas un
std::vector<Objet*> car le constructeur est explicit)
- celui qui prend des iterateurs. Celui là pourrait etre appelé sur des
entiers, mais je ne pense pas que ca compile (parceque l'operateur * unaire
sur un entier n'est pas définit).
std::vector< std::vector< std::vector< Objet* > > > tab( i, std::Vector< std::vector< Object* > >( j, k ) ;
Quel est le constructeur appelé dans l'expression std::Vector< std::vector< Object* > >( j, k ) ? Dans la MSDN, j'ai trouvé cette liste des constructeurs :
Les deux seuls constructeurs à deux parametres sont : - celui qui prend la taille et un const Type& (mais k n'est pas un std::vector<Objet*> car le constructeur est explicit) - celui qui prend des iterateurs. Celui là pourrait etre appelé sur des entiers, mais je ne pense pas que ca compile (parceque l'operateur * unaire sur un entier n'est pas définit).
-- Vincent
kanze
"Vincent Lascaux" wrote in message news:<3fcb84b5$0$2785$...
std::vector< std::vector< std::vector< Objet* > > > tab( i, std::Vector< std::vector< Object* > >( j, k ) ;
Quel est le constructeur appelé dans l'expression std::Vector< std::vector< Object* > >( j, k ) ? Dans la MSDN, j'ai trouvé cette liste des constructeurs :
Les deux seuls constructeurs à deux parametres sont : - celui qui prend la taille et un const Type& (mais k n'est pas un std::vector<Objet*> car le constructeur est explicit) - celui qui prend des iterateurs. Celui là pourrait etre appelé sur des entiers, mais je ne pense pas que ca compile (parceque l'operateur * unaire sur un entier n'est pas définit).
C'est bien celui qui prend les « itérateurs ». Pour citer la norme (§23.1.1/9) :
For every sequence defined in this clause [std::vector est une séquence définie dans §23] and in clause 21:
-- the constructor
template< class InputIterator > X(InputIterator f, InputIterator l, const Allocator& a = Allocator&())
shall have the same effect as:
X(static_cast<typename X::size_type>(f), static_cast<typename X::value_type>(l), a)
if InputIterator is an integral type.
Essaie avec ton compilateur, mais la norme dit que ça doit marcher.
On pourrait arguer que std::vector< std::vector< Object* > >( j, std::vector< Object* >( k ) ) serait plus clair. Peut-être. Franchement, je trouve que quand il s'agit des tableaux multi-dimensionnels, std::vector n'est pas clair, quelque soit la façon qu'on l'écrit. Je ne connais pas valarray, c'est peut-être la bonne solution, mais sinon, je commencerais par écrire une classe à moi, qui mappe un vector d'une dimension en trois dimensions.
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
"Vincent Lascaux" <nospam@nospam.org> wrote in message
news:<3fcb84b5$0$2785$626a54ce@news.free.fr>...
std::vector< std::vector< std::vector< Objet* > > >
tab( i, std::Vector< std::vector< Object* > >( j, k ) ;
Quel est le constructeur appelé dans l'expression std::Vector< std::vector<
Object* > >( j, k ) ? Dans la MSDN, j'ai trouvé cette liste des
constructeurs :
Les deux seuls constructeurs à deux parametres sont :
- celui qui prend la taille et un const Type& (mais k n'est pas un
std::vector<Objet*> car le constructeur est explicit)
- celui qui prend des iterateurs. Celui là pourrait etre appelé sur
des entiers, mais je ne pense pas que ca compile (parceque l'operateur
* unaire sur un entier n'est pas définit).
C'est bien celui qui prend les « itérateurs ». Pour citer la norme
(§23.1.1/9) :
For every sequence defined in this clause [std::vector est une
séquence définie dans §23] and in clause 21:
-- the constructor
template< class InputIterator >
X(InputIterator f, InputIterator l, const Allocator& a = Allocator&())
shall have the same effect as:
X(static_cast<typename X::size_type>(f),
static_cast<typename X::value_type>(l),
a)
if InputIterator is an integral type.
Essaie avec ton compilateur, mais la norme dit que ça doit marcher.
On pourrait arguer que
std::vector< std::vector< Object* > >( j, std::vector< Object* >( k ) )
serait plus clair. Peut-être. Franchement, je trouve que quand il s'agit
des tableaux multi-dimensionnels, std::vector n'est pas clair, quelque
soit la façon qu'on l'écrit. Je ne connais pas valarray, c'est peut-être
la bonne solution, mais sinon, je commencerais par écrire une classe à
moi, qui mappe un vector d'une dimension en trois dimensions.
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
"Vincent Lascaux" wrote in message news:<3fcb84b5$0$2785$...
std::vector< std::vector< std::vector< Objet* > > > tab( i, std::Vector< std::vector< Object* > >( j, k ) ;
Quel est le constructeur appelé dans l'expression std::Vector< std::vector< Object* > >( j, k ) ? Dans la MSDN, j'ai trouvé cette liste des constructeurs :
Les deux seuls constructeurs à deux parametres sont : - celui qui prend la taille et un const Type& (mais k n'est pas un std::vector<Objet*> car le constructeur est explicit) - celui qui prend des iterateurs. Celui là pourrait etre appelé sur des entiers, mais je ne pense pas que ca compile (parceque l'operateur * unaire sur un entier n'est pas définit).
C'est bien celui qui prend les « itérateurs ». Pour citer la norme (§23.1.1/9) :
For every sequence defined in this clause [std::vector est une séquence définie dans §23] and in clause 21:
-- the constructor
template< class InputIterator > X(InputIterator f, InputIterator l, const Allocator& a = Allocator&())
shall have the same effect as:
X(static_cast<typename X::size_type>(f), static_cast<typename X::value_type>(l), a)
if InputIterator is an integral type.
Essaie avec ton compilateur, mais la norme dit que ça doit marcher.
On pourrait arguer que std::vector< std::vector< Object* > >( j, std::vector< Object* >( k ) ) serait plus clair. Peut-être. Franchement, je trouve que quand il s'agit des tableaux multi-dimensionnels, std::vector n'est pas clair, quelque soit la façon qu'on l'écrit. Je ne connais pas valarray, c'est peut-être la bonne solution, mais sinon, je commencerais par écrire une classe à moi, qui mappe un vector d'une dimension en trois dimensions.
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16