C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

n1479 a propos de array::iterator

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Benoît Dejean
Guest





PostPosted: Sun Apr 24, 2005 10:41 am    Post subject: n1479 a propos de array::iterator Reply with quote



Bonjour, je me pose une question quand à l'utilisation de std::iterator dans
l'implémentation de la STL. Je pense qu'il est raisonnable que tous les
iterator de la STL soient des sous-classes de std::iterator. Ce qui me permet
d'écrire des choses comme :

template<typename Sequence>
void print_all(const Sequence& seq)
{
typedef typename Sequence::const_iterator InputIterator;
typedef typename InputIterator::value_type ValueType;
typedef typename std::ostream_iterator<ValueType> OutputIterator;

std::copy(seq.begin(), seq.end(), OutputIterator(std::cout, ", "));
std::cout << 'n';
}

et d'utiliser cela avec std::vector, std::set, ...

Maintenant, je lis
A Proposal to Add a Fixed Size Array Wrapper to the Standard Library
Technical Report
http://www.open-std.org/jtc1/sc22/WG21/docs/papers/2003/n1479.html

et en gras

typedef implementation defined iterator;
// See lib.container.requirements
typedef implementation defined const_iterator;


et évidemment le lien "See lib.container.requirements" en commentaire ne
fonctionne pas, ce qui me fait me poser des questions.

Ce qui m'inquiète, c'est l'implémentation que fournit gcc-4.0
libstdc++-v3/include/tr1/array


typedef value_type* iterator;
typedef const value_type* const_iterator;

avec une telle définition, mon code ne fonctionne plus. Je sais que gcc
fournit une implémentation expérimental, mais serait-elle légale ? Si oui,
pourquoi est-elle permise puisqu'apparemment elle rendrait std:array
incompatible avec ses les autres conteneurs de la STL ?

merci.
Back to top
Gabriel Dos Reis
Guest





PostPosted: Sun Apr 24, 2005 12:31 pm    Post subject: Re: n1479 a propos de array::iterator Reply with quote



Benoît Dejean <tazforever (AT) free (DOT) fr> writes:

Quote:
Bonjour, je me pose une question quand à l'utilisation de std::iterator dans
l'implémentation de la STL. Je pense qu'il est raisonnable que tous les
iterator de la STL soient des sous-classes de std::iterator. Ce qui me permet
d'écrire des choses comme :

C'est une hypothèse raisonnable, mais en pratique non-universellement
vérifiée.

Quote:
template<typename Sequence
void print_all(const Sequence& seq)
{
typedef typename Sequence::const_iterator InputIterator;
typedef typename InputIterator::value_type ValueType;

Rien n'interdit à std::vector Utilise std::iterator_traits<>.

-- Gaby

Back to top
Benoît Dejean
Guest





PostPosted: Sun Apr 24, 2005 1:21 pm    Post subject: Re: n1479 a propos de array::iterator Reply with quote



Le Sun, 24 Apr 2005 07:31:49 -0500, Gabriel Dos Reis a écrit :

Quote:
Benoît Dejean <tazforever (AT) free (DOT) fr> writes:

Rien n'interdit à std::vector<T>::iterator d'être un T*.
Utilise std::iterator_traits<>.

Merci, est-ce que je peux en conclure que je dois utiliser
std::iterator_traits<> systématiquement ?


Back to top
Gabriel Dos Reis
Guest





PostPosted: Sun Apr 24, 2005 5:13 pm    Post subject: Re: n1479 a propos de array::iterator Reply with quote

Benoît Dejean <tazforever (AT) free (DOT) fr> writes:

Quote:
Le Sun, 24 Apr 2005 07:31:49 -0500, Gabriel Dos Reis a écrit :

Benoît Dejean <tazforever (AT) free (DOT) fr> writes:

Rien n'interdit à std::vector<T>::iterator d'être un T*.
Utilise std::iterator_traits<>.

Merci, est-ce que je peux en conclure que je dois utiliser
std::iterator_traits<> systématiquement ?

Pour ce gence de choses, il est plus fiable que la notation
i::value_type.

-- Gaby

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.