Essaie de créer des noms de variables plus explicites. D'autre part, tu fais du C++, pas du C, donc déclarer les variables en bloc au début est généralement une mauvaise idée.
vector< vector<Vector3D>* > pVector0;
AMHA, il y a une erreur ici : pourquoi diable fais-tu un tableau de pointeurs vers des tablaux ?
Essaie donc
vector< vector<Vector3D> > ma_matrice_de_points;
On Thu, 14 Jul 2005 11:50:10 -0400, hannibal200480@yahoo.fr:
int l,m,w;
Essaie de créer des noms de variables plus explicites.
D'autre part, tu fais du C++, pas du C, donc déclarer les variables en
bloc au début est généralement une mauvaise idée.
vector< vector<Vector3D>* > pVector0;
AMHA, il y a une erreur ici : pourquoi diable fais-tu un tableau de
pointeurs vers des tablaux ?
Essaie de créer des noms de variables plus explicites. D'autre part, tu fais du C++, pas du C, donc déclarer les variables en bloc au début est généralement une mauvaise idée.
vector< vector<Vector3D>* > pVector0;
AMHA, il y a une erreur ici : pourquoi diable fais-tu un tableau de pointeurs vers des tablaux ?
Essaie donc
vector< vector<Vector3D> > ma_matrice_de_points;
hannibal200480
avec la declaration vector< vector<Vector3D> > ma_matrice_de_points
la partie du programme devient
int l,m,w;
vector< vector<Vector3D> > ma_matrice_de_points;
/*Vector3D est declare comme une classe de points 3D*/
ma_matrice_de_points est un vecteur de vecteur. Ce que je voulais faire c'est d'ajouter le point 3D, pos, a la position m dans le vecteur.
Toujours, Je n'arrive pas a ajouter des elements (i.e. points 3D) au pVector0[m] .
Merci
Fabien LE LEZ wrote:
On Thu, 14 Jul 2005 11:50:10 -0400, :
int l,m,w;
Essaie de créer des noms de variables plus explicites. D'autre part, tu fais du C++, pas du C, donc déclarer les variables e n bloc au début est généralement une mauvaise idée.
vector< vector<Vector3D>* > pVector0;
AMHA, il y a une erreur ici : pourquoi diable fais-tu un tableau de pointeurs vers des tablaux ?
Essaie donc
vector< vector<Vector3D> > ma_matrice_de_points;
avec la declaration vector< vector<Vector3D> > ma_matrice_de_points
la partie du programme devient
int l,m,w;
vector< vector<Vector3D> > ma_matrice_de_points;
/*Vector3D est declare comme une classe de points 3D*/
ma_matrice_de_points est un vecteur de vecteur. Ce que je voulais faire
c'est d'ajouter le point 3D, pos, a la position m dans le vecteur.
Toujours, Je n'arrive pas a ajouter des elements (i.e. points 3D) au
pVector0[m] .
Merci
Fabien LE LEZ wrote:
On Thu, 14 Jul 2005 11:50:10 -0400, hannibal200480@yahoo.fr:
int l,m,w;
Essaie de créer des noms de variables plus explicites.
D'autre part, tu fais du C++, pas du C, donc déclarer les variables e n
bloc au début est généralement une mauvaise idée.
vector< vector<Vector3D>* > pVector0;
AMHA, il y a une erreur ici : pourquoi diable fais-tu un tableau de
pointeurs vers des tablaux ?
ma_matrice_de_points est un vecteur de vecteur. Ce que je voulais faire c'est d'ajouter le point 3D, pos, a la position m dans le vecteur.
Toujours, Je n'arrive pas a ajouter des elements (i.e. points 3D) au pVector0[m] .
Merci
Fabien LE LEZ wrote:
On Thu, 14 Jul 2005 11:50:10 -0400, :
int l,m,w;
Essaie de créer des noms de variables plus explicites. D'autre part, tu fais du C++, pas du C, donc déclarer les variables e n bloc au début est généralement une mauvaise idée.
vector< vector<Vector3D>* > pVector0;
AMHA, il y a une erreur ici : pourquoi diable fais-tu un tableau de pointeurs vers des tablaux ?
Ce que je voulais faire c'est d'ajouter le point 3D, pos, a la position m dans le vecteur.
Connais-tu à l'avance la taille du tableau ? Si tu mets le point à une position donnée, les lignes précédentes doivent-elles rester vides ?
De toutes façons, ton code est mal parti. Oublie toute notion de pointeur et de new, ça n'a rien à faire ici.
Commençons par les bases : si tu veux rajouter n éléments identiques à un std::vector<> v, la seule bonne manière que je connaisse est :
v.insert (v.end(), n); ou v.insert (v.end(), n, element_modele);
Donc, si tu as un vector< vector<Machin> > v; et que tu veux rajouter n vector<Machin> vides à la fin :
v.insert (v.end(), n);
Je ne suis pas sûr qu'un vector<vector<>> soit idéal pour représenter une matrice. Si tu veux une matrice, cherche donc "matrice" dans Google : <http://groups.google.com/groups?as_q=matrice&as_ugroup=fr.comp.lang.c%2B%2B>
On Thu, 14 Jul 2005 13:11:25 -0400, hannibal200480@yahoo.fr:
ma_matrice_de_points est un vecteur de vecteur.
Non, un tableau de tableaux.
Ce que je voulais faire
c'est d'ajouter le point 3D, pos, a la position m dans le vecteur.
Connais-tu à l'avance la taille du tableau ?
Si tu mets le point à une position donnée, les lignes précédentes
doivent-elles rester vides ?
De toutes façons, ton code est mal parti.
Oublie toute notion de pointeur et de new, ça n'a rien à faire ici.
Commençons par les bases : si tu veux rajouter n éléments identiques à
un std::vector<> v, la seule bonne manière que je connaisse est :
v.insert (v.end(), n);
ou
v.insert (v.end(), n, element_modele);
Donc, si tu as un
vector< vector<Machin> > v;
et que tu veux rajouter n vector<Machin> vides à la fin :
v.insert (v.end(), n);
Je ne suis pas sûr qu'un vector<vector<>> soit idéal pour représenter
une matrice. Si tu veux une matrice, cherche donc "matrice" dans
Google :
<http://groups.google.com/groups?as_q=matrice&as_ugroup=fr.comp.lang.c%2B%2B>
Ce que je voulais faire c'est d'ajouter le point 3D, pos, a la position m dans le vecteur.
Connais-tu à l'avance la taille du tableau ? Si tu mets le point à une position donnée, les lignes précédentes doivent-elles rester vides ?
De toutes façons, ton code est mal parti. Oublie toute notion de pointeur et de new, ça n'a rien à faire ici.
Commençons par les bases : si tu veux rajouter n éléments identiques à un std::vector<> v, la seule bonne manière que je connaisse est :
v.insert (v.end(), n); ou v.insert (v.end(), n, element_modele);
Donc, si tu as un vector< vector<Machin> > v; et que tu veux rajouter n vector<Machin> vides à la fin :
v.insert (v.end(), n);
Je ne suis pas sûr qu'un vector<vector<>> soit idéal pour représenter une matrice. Si tu veux une matrice, cherche donc "matrice" dans Google : <http://groups.google.com/groups?as_q=matrice&as_ugroup=fr.comp.lang.c%2B%2B>
Comment ajouter un élément Vector3D à la kieme vector<Vector3D> ?
Merci
Fabien LE LEZ wrote:
On Thu, 14 Jul 2005 13:11:25 -0400, :
ma_matrice_de_points est un vecteur de vecteur.
Non, un tableau de tableaux.
Ce que je voulais faire c'est d'ajouter le point 3D, pos, a la position m dans le vecteur.
Connais-tu à l'avance la taille du tableau ? Si tu mets le point à une position donnée, les lignes précédent es doivent-elles rester vides ?
De toutes façons, ton code est mal parti. Oublie toute notion de pointeur et de new, ça n'a rien à faire ici.
Commençons par les bases : si tu veux rajouter n éléments identiq ues à un std::vector<> v, la seule bonne manière que je connaisse est :
v.insert (v.end(), n); ou v.insert (v.end(), n, element_modele);
Donc, si tu as un vector< vector<Machin> > v; et que tu veux rajouter n vector<Machin> vides à la fin :
v.insert (v.end(), n);
Je ne suis pas sûr qu'un vector<vector<>> soit idéal pour représe nter une matrice. Si tu veux une matrice, cherche donc "matrice" dans Google : <http://groups.google.com/groups?as_q=matrice&as_ugroup=fr.comp.lan g.c%2B%2B>
Comment ajouter un élément Vector3D à la kieme vector<Vector3D> ?
Merci
Fabien LE LEZ wrote:
On Thu, 14 Jul 2005 13:11:25 -0400, hannibal200480@yahoo.fr:
ma_matrice_de_points est un vecteur de vecteur.
Non, un tableau de tableaux.
Ce que je voulais faire
c'est d'ajouter le point 3D, pos, a la position m dans le vecteur.
Connais-tu à l'avance la taille du tableau ?
Si tu mets le point à une position donnée, les lignes précédent es
doivent-elles rester vides ?
De toutes façons, ton code est mal parti.
Oublie toute notion de pointeur et de new, ça n'a rien à faire ici.
Commençons par les bases : si tu veux rajouter n éléments identiq ues à
un std::vector<> v, la seule bonne manière que je connaisse est :
v.insert (v.end(), n);
ou
v.insert (v.end(), n, element_modele);
Donc, si tu as un
vector< vector<Machin> > v;
et que tu veux rajouter n vector<Machin> vides à la fin :
v.insert (v.end(), n);
Je ne suis pas sûr qu'un vector<vector<>> soit idéal pour représe nter
une matrice. Si tu veux une matrice, cherche donc "matrice" dans
Google :
<http://groups.google.com/groups?as_q=matrice&as_ugroup=fr.comp.lan g.c%2B%2B>
Comment ajouter un élément Vector3D à la kieme vector<Vector3D> ?
Merci
Fabien LE LEZ wrote:
On Thu, 14 Jul 2005 13:11:25 -0400, :
ma_matrice_de_points est un vecteur de vecteur.
Non, un tableau de tableaux.
Ce que je voulais faire c'est d'ajouter le point 3D, pos, a la position m dans le vecteur.
Connais-tu à l'avance la taille du tableau ? Si tu mets le point à une position donnée, les lignes précédent es doivent-elles rester vides ?
De toutes façons, ton code est mal parti. Oublie toute notion de pointeur et de new, ça n'a rien à faire ici.
Commençons par les bases : si tu veux rajouter n éléments identiq ues à un std::vector<> v, la seule bonne manière que je connaisse est :
v.insert (v.end(), n); ou v.insert (v.end(), n, element_modele);
Donc, si tu as un vector< vector<Machin> > v; et que tu veux rajouter n vector<Machin> vides à la fin :
v.insert (v.end(), n);
Je ne suis pas sûr qu'un vector<vector<>> soit idéal pour représe nter une matrice. Si tu veux une matrice, cherche donc "matrice" dans Google : <http://groups.google.com/groups?as_q=matrice&as_ugroup=fr.comp.lan g.c%2B%2B>
vector< vector<Vector3D> > v; v.insert (v.end(), n); me convient. Comment ajouter un élément Vector3D à la kieme vector<Vector3D> ?
essaie d'initialiser avec vector< vector<Vector3D> > v(nb_lignes,Vector3D(nb_colonnes)); si tu connais à l'avance les nombres et si Vector3D possède un constructeur par défaut.
Pour lire/écrire le i,j Vector3D, il suffit de faire v[i][j] = Vector3D(...);
Mais dans l'ensemble tu vas t'embeter avec ça. L'idéal c'est d'avoir une classe matrice (eventuellement basée sur vector<vector<T>>), soit tu en prends une qui existe et qui convient, soit tu en fais une toi-même, du genre :
template <class elt> class matrice_simple { typedef std::vector<elt> ligne; private: std::vector<ligne> Elements; public: matrice_simple(int nb_l, int nb_c):Elements(nb_l, ligne(nb_c)){} elt& operator()(int l, int c){return Elements[l][c];} const elt& operator()(int l,int c) const {return Elements[l][c];} };
Merci
Fabien LE LEZ wrote:
On Thu, 14 Jul 2005 13:11:25 -0400, :
ma_matrice_de_points est un vecteur de vecteur.
Non, un tableau de tableaux.
Ce que je voulais faire c'est d'ajouter le point 3D, pos, a la position m dans le vecteur.
Connais-tu à l'avance la taille du tableau ? Si tu mets le point à une position donnée, les lignes précédentes doivent-elles rester vides ?
De toutes façons, ton code est mal parti. Oublie toute notion de pointeur et de new, ça n'a rien à faire ici.
Commençons par les bases : si tu veux rajouter n éléments identiques à un std::vector<> v, la seule bonne manière que je connaisse est :
v.insert (v.end(), n); ou v.insert (v.end(), n, element_modele);
Donc, si tu as un vector< vector<Machin> > v; et que tu veux rajouter n vector<Machin> vides à la fin :
v.insert (v.end(), n);
Je ne suis pas sûr qu'un vector<vector<>> soit idéal pour représenter une matrice. Si tu veux une matrice, cherche donc "matrice" dans Google : <http://groups.google.com/groups?as_q=matrice&as_ugroup=fr.comp.lang.c%2B%2B>
vector< vector<Vector3D> > v;
v.insert (v.end(), n);
me convient.
Comment ajouter un élément Vector3D à la kieme vector<Vector3D> ?
essaie d'initialiser avec
vector< vector<Vector3D> > v(nb_lignes,Vector3D(nb_colonnes));
si tu connais à l'avance les nombres et si Vector3D possède un constructeur
par défaut.
Pour lire/écrire le i,j Vector3D, il suffit de faire
v[i][j] = Vector3D(...);
Mais dans l'ensemble tu vas t'embeter avec ça. L'idéal c'est d'avoir une
classe matrice (eventuellement basée sur vector<vector<T>>), soit tu en
prends une qui existe et qui convient, soit tu en fais une toi-même, du
genre :
template <class elt> class matrice_simple
{
typedef std::vector<elt> ligne;
private:
std::vector<ligne> Elements;
public:
matrice_simple(int nb_l, int nb_c):Elements(nb_l, ligne(nb_c)){}
elt& operator()(int l, int c){return Elements[l][c];}
const elt& operator()(int l,int c) const {return Elements[l][c];}
};
Merci
Fabien LE LEZ wrote:
On Thu, 14 Jul 2005 13:11:25 -0400, hannibal200480@yahoo.fr:
ma_matrice_de_points est un vecteur de vecteur.
Non, un tableau de tableaux.
Ce que je voulais faire c'est d'ajouter le point 3D, pos, a la position m
dans le vecteur.
Connais-tu à l'avance la taille du tableau ?
Si tu mets le point à une position donnée, les lignes précédentes
doivent-elles rester vides ?
De toutes façons, ton code est mal parti. Oublie toute notion de pointeur
et de new, ça n'a rien à faire ici.
Commençons par les bases : si tu veux rajouter n éléments identiques à
un std::vector<> v, la seule bonne manière que je connaisse est :
v.insert (v.end(), n);
ou
v.insert (v.end(), n, element_modele);
Donc, si tu as un vector< vector<Machin> > v;
et que tu veux rajouter n vector<Machin> vides à la fin :
v.insert (v.end(), n);
Je ne suis pas sûr qu'un vector<vector<>> soit idéal pour représenter
une matrice. Si tu veux une matrice, cherche donc "matrice" dans
Google :
<http://groups.google.com/groups?as_q=matrice&as_ugroup=fr.comp.lang.c%2B%2B>
vector< vector<Vector3D> > v; v.insert (v.end(), n); me convient. Comment ajouter un élément Vector3D à la kieme vector<Vector3D> ?
essaie d'initialiser avec vector< vector<Vector3D> > v(nb_lignes,Vector3D(nb_colonnes)); si tu connais à l'avance les nombres et si Vector3D possède un constructeur par défaut.
Pour lire/écrire le i,j Vector3D, il suffit de faire v[i][j] = Vector3D(...);
Mais dans l'ensemble tu vas t'embeter avec ça. L'idéal c'est d'avoir une classe matrice (eventuellement basée sur vector<vector<T>>), soit tu en prends une qui existe et qui convient, soit tu en fais une toi-même, du genre :
template <class elt> class matrice_simple { typedef std::vector<elt> ligne; private: std::vector<ligne> Elements; public: matrice_simple(int nb_l, int nb_c):Elements(nb_l, ligne(nb_c)){} elt& operator()(int l, int c){return Elements[l][c];} const elt& operator()(int l,int c) const {return Elements[l][c];} };
Merci
Fabien LE LEZ wrote:
On Thu, 14 Jul 2005 13:11:25 -0400, :
ma_matrice_de_points est un vecteur de vecteur.
Non, un tableau de tableaux.
Ce que je voulais faire c'est d'ajouter le point 3D, pos, a la position m dans le vecteur.
Connais-tu à l'avance la taille du tableau ? Si tu mets le point à une position donnée, les lignes précédentes doivent-elles rester vides ?
De toutes façons, ton code est mal parti. Oublie toute notion de pointeur et de new, ça n'a rien à faire ici.
Commençons par les bases : si tu veux rajouter n éléments identiques à un std::vector<> v, la seule bonne manière que je connaisse est :
v.insert (v.end(), n); ou v.insert (v.end(), n, element_modele);
Donc, si tu as un vector< vector<Machin> > v; et que tu veux rajouter n vector<Machin> vides à la fin :
v.insert (v.end(), n);
Je ne suis pas sûr qu'un vector<vector<>> soit idéal pour représenter une matrice. Si tu veux une matrice, cherche donc "matrice" dans Google : <http://groups.google.com/groups?as_q=matrice&as_ugroup=fr.comp.lang.c%2B%2B>
Fabien LE LEZ
On Sat, 16 Jul 2005 15:07:21 +0200, "Alexandre" :
elt& operator()(int l, int c){return Elements[l][c];}
A priori, on écrira plutôt "Elements.at(l).at(c)", sauf si le profiler dit que c'est trop lent (ce qui est plutôt rare).
On Sat, 16 Jul 2005 15:07:21 +0200, "Alexandre"
<alex.g@netcourrier.com>:
elt& operator()(int l, int c){return Elements[l][c];}
A priori, on écrira plutôt "Elements.at(l).at(c)", sauf si le profiler
dit que c'est trop lent (ce qui est plutôt rare).
elt& operator()(int l, int c){return Elements[l][c];}
A priori, on écrira plutôt "Elements.at(l).at(c)", sauf si le profiler dit que c'est trop lent (ce qui est plutôt rare).
James Kanze
Fabien LE LEZ wrote:
On Sat, 16 Jul 2005 15:07:21 +0200, "Alexandre" :
elt& operator()(int l, int c){return Elements[l][c];}
A priori, on écrira plutôt "Elements.at(l).at(c)", sauf si le profiler dit que c'est trop lent (ce qui est plutôt rare).
A priori, on écrira Elements[l][c], et on se servir d'une version de la bibliothèque qui aborte le programme avec message d'erreur dans le cas où il y a une erreur de bornes.
On n'utilise at() que si on veut une exception -- c-à-d qu'on s'attend à attrapper l'erreur plus haut et récupérer. Ce qui est très rare.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Fabien LE LEZ wrote:
On Sat, 16 Jul 2005 15:07:21 +0200, "Alexandre"
<alex.g@netcourrier.com>:
elt& operator()(int l, int c){return Elements[l][c];}
A priori, on écrira plutôt "Elements.at(l).at(c)", sauf si le
profiler dit que c'est trop lent (ce qui est plutôt rare).
A priori, on écrira Elements[l][c], et on se servir d'une
version de la bibliothèque qui aborte le programme avec message
d'erreur dans le cas où il y a une erreur de bornes.
On n'utilise at() que si on veut une exception -- c-à-d qu'on
s'attend à attrapper l'erreur plus haut et récupérer. Ce qui est
très rare.
--
James Kanze mailto: james.kanze@free.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
elt& operator()(int l, int c){return Elements[l][c];}
A priori, on écrira plutôt "Elements.at(l).at(c)", sauf si le profiler dit que c'est trop lent (ce qui est plutôt rare).
A priori, on écrira Elements[l][c], et on se servir d'une version de la bibliothèque qui aborte le programme avec message d'erreur dans le cas où il y a une erreur de bornes.
On n'utilise at() que si on veut une exception -- c-à-d qu'on s'attend à attrapper l'erreur plus haut et récupérer. Ce qui est très rare.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Jean-Marc Desperrier
James Kanze wrote:
A priori, on écrira Elements[l][c], et on se servir d'une version de la bibliothèque qui aborte le programme avec message d'erreur dans le cas où il y a une erreur de bornes.
On n'utilise at() que si on veut une exception -- c-à-d qu'on s'attend à attrapper l'erreur plus haut et récupérer. Ce qui est très rare.
Les exceptions ralentissent le programme quand elles ne sont pas prises ?
En tout cas je préfèrerais un exception de type accès mémoire à un abort, car la solution d'arrêter tout et de partir sur un abort dès qu'il y a un problème ne me semble pas universelle. Dans un certain nombre de programmes la robustesse est plus importante, et soit en travaillant sur la conception, soit en y arrivant facilement parceque la structure des opérations est simple, on souhaite plutôt placer un catch global rattrapant tous les types d'exception, annuler l'opération en cours, et continuer les opérations.
James Kanze wrote:
A priori, on écrira Elements[l][c], et on se servir d'une
version de la bibliothèque qui aborte le programme avec message
d'erreur dans le cas où il y a une erreur de bornes.
On n'utilise at() que si on veut une exception -- c-à-d qu'on
s'attend à attrapper l'erreur plus haut et récupérer. Ce qui est
très rare.
Les exceptions ralentissent le programme quand elles ne sont pas prises ?
En tout cas je préfèrerais un exception de type accès mémoire à un
abort, car la solution d'arrêter tout et de partir sur un abort dès
qu'il y a un problème ne me semble pas universelle.
Dans un certain nombre de programmes la robustesse est plus importante,
et soit en travaillant sur la conception, soit en y arrivant facilement
parceque la structure des opérations est simple, on souhaite plutôt
placer un catch global rattrapant tous les types d'exception, annuler
l'opération en cours, et continuer les opérations.
A priori, on écrira Elements[l][c], et on se servir d'une version de la bibliothèque qui aborte le programme avec message d'erreur dans le cas où il y a une erreur de bornes.
On n'utilise at() que si on veut une exception -- c-à-d qu'on s'attend à attrapper l'erreur plus haut et récupérer. Ce qui est très rare.
Les exceptions ralentissent le programme quand elles ne sont pas prises ?
En tout cas je préfèrerais un exception de type accès mémoire à un abort, car la solution d'arrêter tout et de partir sur un abort dès qu'il y a un problème ne me semble pas universelle. Dans un certain nombre de programmes la robustesse est plus importante, et soit en travaillant sur la conception, soit en y arrivant facilement parceque la structure des opérations est simple, on souhaite plutôt placer un catch global rattrapant tous les types d'exception, annuler l'opération en cours, et continuer les opérations.