Dans une fonction, j'ai besoin de passer comme paramètre l'adresse d'un
élément du vecteur (c'est comme ça...), c'est à dire un paramètre du type
ClassA*.
Quand je tente
&mon_vecteur.at(i)
ça plante.
Quelqu'un sait pourquoi ?
En fait j'ai besoin de stocker quelque part les adresses des éléments du
vecteur.
Merci
Marc
Dans une fonction, j'ai besoin de passer comme paramètre l'adresse d'un élément du vecteur (c'est comme ça...), c'est à dire un paramètre du type ClassA*. Quand je tente &mon_vecteur.at(i)
&(mon_vecteur[i])
Vincent
-- vmime, une bibliothèque C++ sous licence GPL pour parser et générer des messages au format MIME : http://www.sourceforge.net/projects/vmime/
vector<ClassA> mon_vecteur;
Dans une fonction, j'ai besoin de passer comme paramètre l'adresse d'un
élément du vecteur (c'est comme ça...), c'est à dire un paramètre du type
ClassA*.
Quand je tente
&mon_vecteur.at(i)
&(mon_vecteur[i])
Vincent
--
vmime, une bibliothèque C++ sous licence GPL pour parser et générer
des messages au format MIME : http://www.sourceforge.net/projects/vmime/
Dans une fonction, j'ai besoin de passer comme paramètre l'adresse d'un élément du vecteur (c'est comme ça...), c'est à dire un paramètre du type ClassA*. Quand je tente &mon_vecteur.at(i)
&(mon_vecteur[i])
Vincent
-- vmime, une bibliothèque C++ sous licence GPL pour parser et générer des messages au format MIME : http://www.sourceforge.net/projects/vmime/
Fabien LE LEZ
On Fri, 5 Dec 2003 18:31:14 +0100, "Marc" wrote:
Quand je tente &mon_vecteur.at(i) ça plante.
Qu'entends-tu par "ça plante" ? Core dump ? Exception ?
-- ;-)
On Fri, 5 Dec 2003 18:31:14 +0100, "Marc" <metrica@free.fr> wrote:
Quand je tente
&mon_vecteur.at(i)
ça plante.
Qu'entends-tu par "ça plante" ? Core dump ? Exception ?
Qu'entends-tu par "ça plante" ? Core dump ? Exception ?
-- ;-)
Zouplaz
Marc - :
En fait j'ai besoin de stocker quelque part les adresses des éléments du vecteur.
Et tu es sur qu'il n'y a pas le moindre risque qu'elle change en cours de route (redimensionnement du vecteur, soupe interne réalisée sans que tu en sois averti) ?
Marc - metrica@free.fr :
En fait j'ai besoin de stocker quelque part les adresses des éléments du
vecteur.
Et tu es sur qu'il n'y a pas le moindre risque qu'elle change en cours de
route (redimensionnement du vecteur, soupe interne réalisée sans que tu en
sois averti) ?
En fait j'ai besoin de stocker quelque part les adresses des éléments du vecteur.
Et tu es sur qu'il n'y a pas le moindre risque qu'elle change en cours de route (redimensionnement du vecteur, soupe interne réalisée sans que tu en sois averti) ?
Ivan Vecerina
"Marc" wrote in message news:3fd0c154$0$7157$
Quand je tente &mon_vecteur.at(i) ça plante. Quand et comment? l'appel en soi est correct.
Quelqu'un sait pourquoi ? Si l'appel même à at() plante (en lançant une exception), le problème
sera corrigé en t'assurant que 0 <= i <= mon_vecteur.size() . Comment le vecteur est-il alloué ? [ dans ce cas, utiliser mon_vecteur[i] masquera dangereusement le problème ] Si la plantée est ultérieure:
En fait j'ai besoin de stocker quelque part les adresses des éléments du vecteur. Il faut être prudent dans ce cas: l'ajout d'un élément peut invalider
toutes les adresses des éléments précédemment stoqués (il se peut que le tableau interne utilisé par mon_vecteur doive être réalloué). Un exemple de code plus complet permettrait de discuter des solutions possible (p.ex. utiliser une autre collection, std::deque ou std::list).
Amicalement, Ivan -- http://ivan.vecerina.com/contact/?subject=NG_POST <- e-mail contact form
"Marc" <metrica@free.fr> wrote in message
news:3fd0c154$0$7157$626a54ce@news.free.fr...
Quand je tente
&mon_vecteur.at(i)
ça plante.
Quand et comment? l'appel en soi est correct.
Quelqu'un sait pourquoi ?
Si l'appel même à at() plante (en lançant une exception), le problème
sera corrigé en t'assurant que 0 <= i <= mon_vecteur.size() .
Comment le vecteur est-il alloué ?
[ dans ce cas, utiliser mon_vecteur[i] masquera
dangereusement le problème ]
Si la plantée est ultérieure:
En fait j'ai besoin de stocker quelque part les adresses des éléments du
vecteur.
Il faut être prudent dans ce cas: l'ajout d'un élément peut invalider
toutes les adresses des éléments précédemment stoqués (il se peut
que le tableau interne utilisé par mon_vecteur doive être réalloué).
Un exemple de code plus complet permettrait de discuter des solutions
possible (p.ex. utiliser une autre collection, std::deque ou std::list).
Amicalement,
Ivan
--
http://ivan.vecerina.com/contact/?subject=NG_POST <- e-mail contact form
Quand je tente &mon_vecteur.at(i) ça plante. Quand et comment? l'appel en soi est correct.
Quelqu'un sait pourquoi ? Si l'appel même à at() plante (en lançant une exception), le problème
sera corrigé en t'assurant que 0 <= i <= mon_vecteur.size() . Comment le vecteur est-il alloué ? [ dans ce cas, utiliser mon_vecteur[i] masquera dangereusement le problème ] Si la plantée est ultérieure:
En fait j'ai besoin de stocker quelque part les adresses des éléments du vecteur. Il faut être prudent dans ce cas: l'ajout d'un élément peut invalider
toutes les adresses des éléments précédemment stoqués (il se peut que le tableau interne utilisé par mon_vecteur doive être réalloué). Un exemple de code plus complet permettrait de discuter des solutions possible (p.ex. utiliser une autre collection, std::deque ou std::list).
Amicalement, Ivan -- http://ivan.vecerina.com/contact/?subject=NG_POST <- e-mail contact form
Alexandre
"Marc" a écrit dans le message de news:3fd0c154$0$7157$
Bonjour, j'utilise des vecteurs du type
vector<ClassA> mon_vecteur;
Dans une fonction, j'ai besoin de passer comme paramètre l'adresse d'un élément du vecteur (c'est comme ça...), c'est à dire un paramètre du type ClassA*. Quand je tente &mon_vecteur.at(i) ça plante. Quelqu'un sait pourquoi ? En fait j'ai besoin de stocker quelque part les adresses des éléments du vecteur. Merci Marc
Bonjour, ça me parait dangereux de travailler avec l'adresse d'un élément de vecteur : elle risque de changer durant la vie de celui-ci... Pourquoi donc veux-tu la passer en adresse ?
"Marc" <metrica@free.fr> a écrit dans le message de
news:3fd0c154$0$7157$626a54ce@news.free.fr...
Bonjour,
j'utilise des vecteurs du type
vector<ClassA> mon_vecteur;
Dans une fonction, j'ai besoin de passer comme paramètre l'adresse d'un
élément du vecteur (c'est comme ça...), c'est à dire un paramètre du type
ClassA*.
Quand je tente
&mon_vecteur.at(i)
ça plante.
Quelqu'un sait pourquoi ?
En fait j'ai besoin de stocker quelque part les adresses des éléments du
vecteur.
Merci
Marc
Bonjour,
ça me parait dangereux de travailler avec l'adresse d'un élément de vecteur
: elle risque de changer durant la vie de celui-ci... Pourquoi donc veux-tu
la passer en adresse ?
"Marc" a écrit dans le message de news:3fd0c154$0$7157$
Bonjour, j'utilise des vecteurs du type
vector<ClassA> mon_vecteur;
Dans une fonction, j'ai besoin de passer comme paramètre l'adresse d'un élément du vecteur (c'est comme ça...), c'est à dire un paramètre du type ClassA*. Quand je tente &mon_vecteur.at(i) ça plante. Quelqu'un sait pourquoi ? En fait j'ai besoin de stocker quelque part les adresses des éléments du vecteur. Merci Marc
Bonjour, ça me parait dangereux de travailler avec l'adresse d'un élément de vecteur : elle risque de changer durant la vie de celui-ci... Pourquoi donc veux-tu la passer en adresse ?
espie
In article , Zouplaz wrote:
Marc - :
En fait j'ai besoin de stocker quelque part les adresses des éléments du vecteur.
Et tu es sur qu'il n'y a pas le moindre risque qu'elle change en cours de route (redimensionnement du vecteur, soupe interne réalisée sans que tu en sois averti) ?
Si je ne m'abuse, ca fait partie des defect reports de la norme, et des assurances qui ont ete donnees depuis: on peut prendre l'adresse d'un element de vector<T>, ca marche de la facon dont on s'attend, et ca ne bouge pas tout seul tant qu'on ne joue pas (implicitement ou explicitement) avec .reserve().
Gaby pourra sans doute nous en dire plus.
In article <Xns9448E3E5897FBZoupla@213.228.0.136>,
Zouplaz <pouet@pouet.com> wrote:
Marc - metrica@free.fr :
En fait j'ai besoin de stocker quelque part les adresses des éléments du
vecteur.
Et tu es sur qu'il n'y a pas le moindre risque qu'elle change en cours de
route (redimensionnement du vecteur, soupe interne réalisée sans que tu en
sois averti) ?
Si je ne m'abuse, ca fait partie des defect reports de la norme, et des
assurances qui ont ete donnees depuis: on peut prendre l'adresse d'un
element de vector<T>, ca marche de la facon dont on s'attend, et ca ne
bouge pas tout seul tant qu'on ne joue pas (implicitement ou explicitement)
avec .reserve().
En fait j'ai besoin de stocker quelque part les adresses des éléments du vecteur.
Et tu es sur qu'il n'y a pas le moindre risque qu'elle change en cours de route (redimensionnement du vecteur, soupe interne réalisée sans que tu en sois averti) ?
Si je ne m'abuse, ca fait partie des defect reports de la norme, et des assurances qui ont ete donnees depuis: on peut prendre l'adresse d'un element de vector<T>, ca marche de la facon dont on s'attend, et ca ne bouge pas tout seul tant qu'on ne joue pas (implicitement ou explicitement) avec .reserve().
Gaby pourra sans doute nous en dire plus.
benoit.breholee
&(mon_vecteur[i])
Est-ce que &(mon_vecteur[0]) peut être considéré comme l'adresse d'un tableau C contenant les éléments du vecteur ? (toujours avec les mêmes précautions : pas de modifications du vecteur, etc.)
&(mon_vecteur[i])
Est-ce que &(mon_vecteur[0]) peut être considéré comme l'adresse d'un
tableau C contenant les éléments du vecteur ? (toujours avec les mêmes
précautions : pas de modifications du vecteur, etc.)
Est-ce que &(mon_vecteur[0]) peut être considéré comme l'adresse d'un tableau C contenant les éléments du vecteur ? (toujours avec les mêmes précautions : pas de modifications du vecteur, etc.)
Michel Michaud
Dans news:, Benoît
Vincent Richard a
&(mon_vecteur[i])
Est-ce que &(mon_vecteur[0]) peut être considéré comme l'adresse d'un tableau C contenant les éléments du vecteur ? (toujours avec les mêmes précautions : pas de modifications du vecteur, etc.)
Oui, en autant que les éléments auxquels tu fais référence existent. Ce n'était pas tout à fait garanti par la norme, mais ça l'est maintenant.
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Dans news:87y8tpwyag.fsf@free.fr, Benoît
Vincent Richard <chere-loque.MARRE-DE-LA-PUB@wanadoo.fr.invalid> a
&(mon_vecteur[i])
Est-ce que &(mon_vecteur[0]) peut être considéré comme l'adresse
d'un tableau C contenant les éléments du vecteur ? (toujours avec
les mêmes précautions : pas de modifications du vecteur, etc.)
Oui, en autant que les éléments auxquels tu fais référence existent.
Ce n'était pas tout à fait garanti par la norme, mais ça l'est
maintenant.
--
Michel Michaud mm@gdzid.com
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Est-ce que &(mon_vecteur[0]) peut être considéré comme l'adresse d'un tableau C contenant les éléments du vecteur ? (toujours avec les mêmes précautions : pas de modifications du vecteur, etc.)
Oui, en autant que les éléments auxquels tu fais référence existent. Ce n'était pas tout à fait garanti par la norme, mais ça l'est maintenant.
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
| Dans news:, Benoît | > Vincent Richard a | > | >> &(mon_vecteur[i]) | > | > Est-ce que &(mon_vecteur[0]) peut être considéré comme l'adresse | > d'un tableau C contenant les éléments du vecteur ? (toujours avec | > les mêmes précautions : pas de modifications du vecteur, etc.) | | Oui, en autant que les éléments auxquels tu fais référence existent. | Ce n'était pas tout à fait garanti par la norme, mais ça l'est | maintenant.
| Dans news:87y8tpwyag.fsf@free.fr, Benoît
| > Vincent Richard <chere-loque.MARRE-DE-LA-PUB@wanadoo.fr.invalid> a
| >
| >> &(mon_vecteur[i])
| >
| > Est-ce que &(mon_vecteur[0]) peut être considéré comme l'adresse
| > d'un tableau C contenant les éléments du vecteur ? (toujours avec
| > les mêmes précautions : pas de modifications du vecteur, etc.)
|
| Oui, en autant que les éléments auxquels tu fais référence existent.
| Ce n'était pas tout à fait garanti par la norme, mais ça l'est
| maintenant.
| Dans news:, Benoît | > Vincent Richard a | > | >> &(mon_vecteur[i]) | > | > Est-ce que &(mon_vecteur[0]) peut être considéré comme l'adresse | > d'un tableau C contenant les éléments du vecteur ? (toujours avec | > les mêmes précautions : pas de modifications du vecteur, etc.) | | Oui, en autant que les éléments auxquels tu fais référence existent. | Ce n'était pas tout à fait garanti par la norme, mais ça l'est | maintenant.
Mais je ne vois toujours pas l'intérêt ici de préférer v[i] à v.at(i).
-- Gaby
--=-=-=--
Michel Michaud
"Michel Michaud" writes:
Dans news:, Benoît
Est-ce que &(mon_vecteur[0]) peut être considéré comme l'adresse d'un tableau C contenant les éléments du vecteur ? (toujours avec les mêmes précautions : pas de modifications du vecteur, etc.)
Oui, en autant que les éléments auxquels tu fais référence existent. Ce n'était pas tout à fait garanti par la norme, mais ça l'est maintenant.
Mais je ne vois toujours pas l'intérêt ici de préférer v[i] à v.at(i).
Moi non plus (ni vice versa d'ailleurs), mais je ne savais pas que c'était ici la question.
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
"Michel Michaud" <mm@gdzid.com> writes:
Dans news:87y8tpwyag.fsf@free.fr, Benoît
Est-ce que &(mon_vecteur[0]) peut être considéré comme l'adresse
d'un tableau C contenant les éléments du vecteur ? (toujours avec
les mêmes précautions : pas de modifications du vecteur, etc.)
Oui, en autant que les éléments auxquels tu fais référence
existent. Ce n'était pas tout à fait garanti par la norme, mais
ça l'est maintenant.
Mais je ne vois toujours pas l'intérêt ici de préférer v[i] à
v.at(i).
Moi non plus (ni vice versa d'ailleurs), mais je ne savais pas que
c'était ici la question.
--
Michel Michaud mm@gdzid.com
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Est-ce que &(mon_vecteur[0]) peut être considéré comme l'adresse d'un tableau C contenant les éléments du vecteur ? (toujours avec les mêmes précautions : pas de modifications du vecteur, etc.)
Oui, en autant que les éléments auxquels tu fais référence existent. Ce n'était pas tout à fait garanti par la norme, mais ça l'est maintenant.
Mais je ne vois toujours pas l'intérêt ici de préférer v[i] à v.at(i).
Moi non plus (ni vice versa d'ailleurs), mais je ne savais pas que c'était ici la question.
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/