imaginons que j'ai un std::map<int,int>, et que j'utilise l'operateur
[] pour acc=E9der =E0 un =E9l=E9ment inexistant:
std::map<int,int> m;
std::cout << m[0];
Que se passe-t-il alors? Est-on garanti qu'un nouvel entier acc=E9d=E9 de
cette mani=E8re soit toujours initialis=E9 =E0 0? Et comment est-ce
possible?
> Les autres messages te donnent la r ponse. J'ajoute que si tu as une > map<K,V> et que tu utilises [], alors V doit avoir un constructeur par > d faut. Si c'est g nant, tu peux utiliser at() au lieu de operator[]. > at() d clenche une exception plut t que d'ins rer en silence lorsque > tu acc des un l ment inexistant. Je ne sais pas si c'est standard > (j'esp re parce que je n'utilise que a).
Ou je suis encore plus fatigue que je le pense, ou ce n'est pas standard.
Si si... sur les vectors ;-)
Je pense qu'il y a eu confusion. -- -Stan
On 29 jan, 14:38, Jean-Marc Bourguet <j...@bourguet.org> wrote:
> Les autres messages te donnent la r ponse. J'ajoute que si tu as une
> map<K,V> et que tu utilises [], alors V doit avoir un constructeur par
> d faut. Si c'est g nant, tu peux utiliser at() au lieu de operator[].
> at() d clenche une exception plut t que d'ins rer en silence lorsque
> tu acc des un l ment inexistant. Je ne sais pas si c'est standard
> (j'esp re parce que je n'utilise que a).
Ou je suis encore plus fatigue que je le pense, ou ce n'est pas standard.
> Les autres messages te donnent la r ponse. J'ajoute que si tu as une > map<K,V> et que tu utilises [], alors V doit avoir un constructeur par > d faut. Si c'est g nant, tu peux utiliser at() au lieu de operator[]. > at() d clenche une exception plut t que d'ins rer en silence lorsque > tu acc des un l ment inexistant. Je ne sais pas si c'est standard > (j'esp re parce que je n'utilise que a).
Ou je suis encore plus fatigue que je le pense, ou ce n'est pas standard.
Si si... sur les vectors ;-)
Je pense qu'il y a eu confusion. -- -Stan
Jean-Marc Bourguet
Stan writes:
On 29 jan, 14:38, Jean-Marc Bourguet wrote:
> > Les autres messages te donnent la r ponse. J'ajoute que si tu as une > > map<K,V> et que tu utilises [], alors V doit avoir un constructeur par > > d faut. Si c'est g nant, tu peux utiliser at() au lieu de operator[]. > > at() d clenche une exception plut t que d'ins rer en silence lorsque > > tu acc des un l ment inexistant. Je ne sais pas si c'est standard > > (j'esp re parce que je n'utilise que a). > > Ou je suis encore plus fatigue que je le pense, ou ce n'est pas standard.
Si si... sur les vectors ;-)
Ca je le savais. Il y a aussi les deque et en general, les sequences ou c'est implementable en temps constant devraient le fournir.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Stan <tmp@neuf.fr> writes:
On 29 jan, 14:38, Jean-Marc Bourguet <j...@bourguet.org> wrote:
> > Les autres messages te donnent la r ponse. J'ajoute que si tu as une
> > map<K,V> et que tu utilises [], alors V doit avoir un constructeur par
> > d faut. Si c'est g nant, tu peux utiliser at() au lieu de operator[].
> > at() d clenche une exception plut t que d'ins rer en silence lorsque
> > tu acc des un l ment inexistant. Je ne sais pas si c'est standard
> > (j'esp re parce que je n'utilise que a).
>
> Ou je suis encore plus fatigue que je le pense, ou ce n'est pas standard.
Si si... sur les vectors ;-)
Ca je le savais. Il y a aussi les deque et en general, les sequences ou
c'est implementable en temps constant devraient le fournir.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
> > Les autres messages te donnent la r ponse. J'ajoute que si tu as une > > map<K,V> et que tu utilises [], alors V doit avoir un constructeur par > > d faut. Si c'est g nant, tu peux utiliser at() au lieu de operator[]. > > at() d clenche une exception plut t que d'ins rer en silence lorsque > > tu acc des un l ment inexistant. Je ne sais pas si c'est standard > > (j'esp re parce que je n'utilise que a). > > Ou je suis encore plus fatigue que je le pense, ou ce n'est pas standard.
Si si... sur les vectors ;-)
Ca je le savais. Il y a aussi les deque et en general, les sequences ou c'est implementable en temps constant devraient le fournir.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Ah, ouais, t'as raison. Bon, je me console en me disant que c'est mentionné dans la "Active Issues List", au numéro DR464 (http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html)
Quelle bibliothèque utilises-tu ?
-- -Stan
On 29 jan, 16:55, Alain Ketterlin <al...@dpt-info.u-strasbg.fr> wrote:
Ah, ouais, t'as raison. Bon, je me console en me disant que c'est
mentionné dans la "Active Issues List", au numéro DR464
(http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html)
Ah, ouais, t'as raison. Bon, je me console en me disant que c'est mentionné dans la "Active Issues List", au numéro DR464 (http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html)
C'est la GNU ISO C++ Library, qui accompagne g++ 4.4.1.
-- Alain.
Eric.Malenfant
On 29 jan, 10:55, Alain Ketterlin wrote:
Jean-Marc Bourguet writes: > Alain Ketterlin writes: >> Les autres messages te donnent la réponse. J'ajoute que si tu as une >> map<K,V> et que tu utilises [], alors V doit avoir un constructeur par >> défaut. Si c'est génant, tu peux utiliser at() au lieu de operator []. >> at() déclenche une exception plutôt que d'insérer en silence lor sque >> tu accèdes à un élément inexistant. Je ne sais pas si c'est st andard >> (j'espère parce que je n'utilise que ça).
> Ou je suis encore plus fatigue que je le pense, ou ce n'est pas standar d.
Ah, ouais, t'as raison. Bon, je me console en me disant que c'est mentionné dans la "Active Issues List", au numéro DR464 (http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html)
Et dans le dernier draft de C++0x: 23.4.1.2 dans n3000
On 29 jan, 10:55, Alain Ketterlin <al...@dpt-info.u-strasbg.fr> wrote:
Jean-Marc Bourguet <j...@bourguet.org> writes:
> Alain Ketterlin <al...@dpt-info.u-strasbg.fr> writes:
>> Les autres messages te donnent la réponse. J'ajoute que si tu as une
>> map<K,V> et que tu utilises [], alors V doit avoir un constructeur par
>> défaut. Si c'est génant, tu peux utiliser at() au lieu de operator [].
>> at() déclenche une exception plutôt que d'insérer en silence lor sque
>> tu accèdes à un élément inexistant. Je ne sais pas si c'est st andard
>> (j'espère parce que je n'utilise que ça).
> Ou je suis encore plus fatigue que je le pense, ou ce n'est pas standar d.
Ah, ouais, t'as raison. Bon, je me console en me disant que c'est
mentionné dans la "Active Issues List", au numéro DR464
(http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html)
Et dans le dernier draft de C++0x: 23.4.1.2 dans n3000
Jean-Marc Bourguet writes: > Alain Ketterlin writes: >> Les autres messages te donnent la réponse. J'ajoute que si tu as une >> map<K,V> et que tu utilises [], alors V doit avoir un constructeur par >> défaut. Si c'est génant, tu peux utiliser at() au lieu de operator []. >> at() déclenche une exception plutôt que d'insérer en silence lor sque >> tu accèdes à un élément inexistant. Je ne sais pas si c'est st andard >> (j'espère parce que je n'utilise que ça).
> Ou je suis encore plus fatigue que je le pense, ou ce n'est pas standar d.
Ah, ouais, t'as raison. Bon, je me console en me disant que c'est mentionné dans la "Active Issues List", au numéro DR464 (http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html)
Et dans le dernier draft de C++0x: 23.4.1.2 dans n3000