"Michel Michaud" writes:
| Il me semble que James a déjà démontré par des articles de la norme,
| que vector<>::size_type ne peut pas être différent de size_t. Je me
| trompe ?
Je ne me souviens pas. Je ne vois pas ce qui l'empêche d'être un
unsigned int, même si size_t est un unsigned long.
| Est-il alors « correct » d'écrire :
| vector<TypeQuelconque> v;
| ...
| for (size_t i= 0; i != v.size(); ++i)
| ...
| Je trouve difficile d'introduire vector::size_type rapidement.
vector<>::size_type est une des abstractions excessives, malheureuses
de la bibliothèque standard.
"Michel Michaud" <mm@gdzid.com> writes:
| Il me semble que James a déjà démontré par des articles de la norme,
| que vector<>::size_type ne peut pas être différent de size_t. Je me
| trompe ?
Je ne me souviens pas. Je ne vois pas ce qui l'empêche d'être un
unsigned int, même si size_t est un unsigned long.
| Est-il alors « correct » d'écrire :
| vector<TypeQuelconque> v;
| ...
| for (size_t i= 0; i != v.size(); ++i)
| ...
| Je trouve difficile d'introduire vector::size_type rapidement.
vector<>::size_type est une des abstractions excessives, malheureuses
de la bibliothèque standard.
"Michel Michaud" writes:
| Il me semble que James a déjà démontré par des articles de la norme,
| que vector<>::size_type ne peut pas être différent de size_t. Je me
| trompe ?
Je ne me souviens pas. Je ne vois pas ce qui l'empêche d'être un
unsigned int, même si size_t est un unsigned long.
| Est-il alors « correct » d'écrire :
| vector<TypeQuelconque> v;
| ...
| for (size_t i= 0; i != v.size(); ++i)
| ...
| Je trouve difficile d'introduire vector::size_type rapidement.
vector<>::size_type est une des abstractions excessives, malheureuses
de la bibliothèque standard.
"Michel Michaud" writes:Il me semble que James a déjà démontré par des articles de la
norme, que vector<>::size_type ne peut pas être différent de
size_t. Je me trompe ?
Je ne me souviens pas. Je ne vois pas ce qui l'empêche d'être un
unsigned int, même si size_t est un unsigned long.
Est-il alors « correct » d'écrire :
vector<TypeQuelconque> v;
...
for (size_t i= 0; i != v.size(); ++i)
...
Je trouve difficile d'introduire vector::size_type rapidement.
Surtout lorsque les vecteurs contiennent des types personnels :
for (vector<TypeQuelconque>::size_type i= 0; i != v.size(); ++i)
C'est terriblement lourd, il me semble. Au point où il apparaît
qu'un typedef (pour vector<TypeQuelconque>::size_type) serait très
utile. Mais est-ce raisonnable de faire un typedef pour chaque type
Yep.
typedef vector<T>::size_type index_type;
N.B. BS utilise normalement int dans TC++PL... Je crois que je
vais lui écrire pour avoir son avis...
Yep. Je crois que quelque part dans ce bouquin, il dit aussi ce
qu'il pense de l'emploi des unsigned ;-)
"Michel Michaud" <mm@gdzid.com> writes:
Il me semble que James a déjà démontré par des articles de la
norme, que vector<>::size_type ne peut pas être différent de
size_t. Je me trompe ?
Je ne me souviens pas. Je ne vois pas ce qui l'empêche d'être un
unsigned int, même si size_t est un unsigned long.
Est-il alors « correct » d'écrire :
vector<TypeQuelconque> v;
...
for (size_t i= 0; i != v.size(); ++i)
...
Je trouve difficile d'introduire vector::size_type rapidement.
Surtout lorsque les vecteurs contiennent des types personnels :
for (vector<TypeQuelconque>::size_type i= 0; i != v.size(); ++i)
C'est terriblement lourd, il me semble. Au point où il apparaît
qu'un typedef (pour vector<TypeQuelconque>::size_type) serait très
utile. Mais est-ce raisonnable de faire un typedef pour chaque type
Yep.
typedef vector<T>::size_type index_type;
N.B. BS utilise normalement int dans TC++PL... Je crois que je
vais lui écrire pour avoir son avis...
Yep. Je crois que quelque part dans ce bouquin, il dit aussi ce
qu'il pense de l'emploi des unsigned ;-)
"Michel Michaud" writes:Il me semble que James a déjà démontré par des articles de la
norme, que vector<>::size_type ne peut pas être différent de
size_t. Je me trompe ?
Je ne me souviens pas. Je ne vois pas ce qui l'empêche d'être un
unsigned int, même si size_t est un unsigned long.
Est-il alors « correct » d'écrire :
vector<TypeQuelconque> v;
...
for (size_t i= 0; i != v.size(); ++i)
...
Je trouve difficile d'introduire vector::size_type rapidement.
Surtout lorsque les vecteurs contiennent des types personnels :
for (vector<TypeQuelconque>::size_type i= 0; i != v.size(); ++i)
C'est terriblement lourd, il me semble. Au point où il apparaît
qu'un typedef (pour vector<TypeQuelconque>::size_type) serait très
utile. Mais est-ce raisonnable de faire un typedef pour chaque type
Yep.
typedef vector<T>::size_type index_type;
N.B. BS utilise normalement int dans TC++PL... Je crois que je
vais lui écrire pour avoir son avis...
Yep. Je crois que quelque part dans ce bouquin, il dit aussi ce
qu'il pense de l'emploi des unsigned ;-)
Gabriel Dos Reis wrote in message
news:..."Michel Michaud" writes:Je trouve difficile d'introduire vector::size_type rapidement.
Avec vi et compatibles :
:ab st std::vector<>::size_type
Par la suite, il faut retourner en arriére pour insérer le type
utilisateur. Mais ça aussi, on peut l'automatiser en partie.
Mais évidemment, ça n'est qu'une partie du problème. Le code est
plus facile à lire si les lignes ne sont pas excessivement longues
non plus. Et que les coupures de lignes ne viennent pas au milieu
des expressions.
Gabriel Dos Reis <gdr@cs.tamu.edu> wrote in message
news:<m3k73dbyoc.fsf@merlin.cs.tamu.edu>...
"Michel Michaud" <mm@gdzid.com> writes:
Je trouve difficile d'introduire vector::size_type rapidement.
Avec vi et compatibles :
:ab st std::vector<>::size_type
Par la suite, il faut retourner en arriére pour insérer le type
utilisateur. Mais ça aussi, on peut l'automatiser en partie.
Mais évidemment, ça n'est qu'une partie du problème. Le code est
plus facile à lire si les lignes ne sont pas excessivement longues
non plus. Et que les coupures de lignes ne viennent pas au milieu
des expressions.
Gabriel Dos Reis wrote in message
news:..."Michel Michaud" writes:Je trouve difficile d'introduire vector::size_type rapidement.
Avec vi et compatibles :
:ab st std::vector<>::size_type
Par la suite, il faut retourner en arriére pour insérer le type
utilisateur. Mais ça aussi, on peut l'automatiser en partie.
Mais évidemment, ça n'est qu'une partie du problème. Le code est
plus facile à lire si les lignes ne sont pas excessivement longues
non plus. Et que les coupures de lignes ne viennent pas au milieu
des expressions.
"Michel Michaud" writes:Dans news:, Gabriel Dos"Michel Michaud" writes:Il me semble que James a déjà démontré par des articles de la
norme, que vector<>::size_type ne peut pas être différent de
size_t. Je me trompe ?
Je ne me souviens pas. Je ne vois pas ce qui l'empêche d'être un
unsigned int, même si size_t est un unsigned long.
Est-ce que l'inverse est possible ?
Oui. Mais cela ne te dit rien sur ce qu'il est. C'est pour ça qu'ils
l'ont appelé une abstraction.
La vraie question est de
savoir si je peux utiliser size_t pour les indices des vecteurs.
Comme je le demandais juste après :
Je crois que j'ai répondu que « int » est l'indice naturel, même si
la norme, dans ses excès d'abstraction, utilise xxx::size_type.
Est-ce que tu utilises
v[vector<T>::size_type(2)]
ou simplement
v[2];
n'aime pas. Qu'enseignez-vous à vos élèves à College Station ?
Nous leur enseignons la programmation (et non C++) :-)
Nous utilisons C++, mais nous allons rapidement à l'essentiel des
concepts. Par exemple, le prochain cours (4ième) sera sur les
exceptions. Nous en avons besoin pour les introduire assez tôt à la
gestion des erreurs.
En particulier, pour les cours nous utilisons des entêtes qui
encapsulent certains détails inintéressants ; les accès aux tableaux
sont vérifiés par défaut (le contraire de ce que tu as dans la
bibliothèque standard).
À mettre int et à ne pas tenir compte des « warning » ? On peut
choisir notre compilateur (ou ses options) pour ne pas avoir les
avertissements, mais alors on ne fait pas du C++ très propre...
Je le transmettrai à qui de droit :-)
"Michel Michaud" <mm@gdzid.com> writes:
Dans news:m3k73dbyoc.fsf@merlin.cs.tamu.edu, Gabriel Dos
"Michel Michaud" <mm@gdzid.com> writes:
Il me semble que James a déjà démontré par des articles de la
norme, que vector<>::size_type ne peut pas être différent de
size_t. Je me trompe ?
Je ne me souviens pas. Je ne vois pas ce qui l'empêche d'être un
unsigned int, même si size_t est un unsigned long.
Est-ce que l'inverse est possible ?
Oui. Mais cela ne te dit rien sur ce qu'il est. C'est pour ça qu'ils
l'ont appelé une abstraction.
La vraie question est de
savoir si je peux utiliser size_t pour les indices des vecteurs.
Comme je le demandais juste après :
Je crois que j'ai répondu que « int » est l'indice naturel, même si
la norme, dans ses excès d'abstraction, utilise xxx::size_type.
Est-ce que tu utilises
v[vector<T>::size_type(2)]
ou simplement
v[2];
n'aime pas. Qu'enseignez-vous à vos élèves à College Station ?
Nous leur enseignons la programmation (et non C++) :-)
Nous utilisons C++, mais nous allons rapidement à l'essentiel des
concepts. Par exemple, le prochain cours (4ième) sera sur les
exceptions. Nous en avons besoin pour les introduire assez tôt à la
gestion des erreurs.
En particulier, pour les cours nous utilisons des entêtes qui
encapsulent certains détails inintéressants ; les accès aux tableaux
sont vérifiés par défaut (le contraire de ce que tu as dans la
bibliothèque standard).
À mettre int et à ne pas tenir compte des « warning » ? On peut
choisir notre compilateur (ou ses options) pour ne pas avoir les
avertissements, mais alors on ne fait pas du C++ très propre...
Je le transmettrai à qui de droit :-)
"Michel Michaud" writes:Dans news:, Gabriel Dos"Michel Michaud" writes:Il me semble que James a déjà démontré par des articles de la
norme, que vector<>::size_type ne peut pas être différent de
size_t. Je me trompe ?
Je ne me souviens pas. Je ne vois pas ce qui l'empêche d'être un
unsigned int, même si size_t est un unsigned long.
Est-ce que l'inverse est possible ?
Oui. Mais cela ne te dit rien sur ce qu'il est. C'est pour ça qu'ils
l'ont appelé une abstraction.
La vraie question est de
savoir si je peux utiliser size_t pour les indices des vecteurs.
Comme je le demandais juste après :
Je crois que j'ai répondu que « int » est l'indice naturel, même si
la norme, dans ses excès d'abstraction, utilise xxx::size_type.
Est-ce que tu utilises
v[vector<T>::size_type(2)]
ou simplement
v[2];
n'aime pas. Qu'enseignez-vous à vos élèves à College Station ?
Nous leur enseignons la programmation (et non C++) :-)
Nous utilisons C++, mais nous allons rapidement à l'essentiel des
concepts. Par exemple, le prochain cours (4ième) sera sur les
exceptions. Nous en avons besoin pour les introduire assez tôt à la
gestion des erreurs.
En particulier, pour les cours nous utilisons des entêtes qui
encapsulent certains détails inintéressants ; les accès aux tableaux
sont vérifiés par défaut (le contraire de ce que tu as dans la
bibliothèque standard).
À mettre int et à ne pas tenir compte des « warning » ? On peut
choisir notre compilateur (ou ses options) pour ne pas avoir les
avertissements, mais alors on ne fait pas du C++ très propre...
Je le transmettrai à qui de droit :-)
| La vraie question est de
| savoir si je peux utiliser size_t pour les indices des vecteurs.
| Comme je le demandais juste après :
Je crois que j'ai répondu que « int » est l'indice naturel, même si la
norme, dans ses excès d'abstraction, utilise xxx::size_type.
Est-ce que tu utilises
v[vector<T>::size_type(2)]
ou simplement
v[2];
| La vraie question est de
| savoir si je peux utiliser size_t pour les indices des vecteurs.
| Comme je le demandais juste après :
Je crois que j'ai répondu que « int » est l'indice naturel, même si la
norme, dans ses excès d'abstraction, utilise xxx::size_type.
Est-ce que tu utilises
v[vector<T>::size_type(2)]
ou simplement
v[2];
| La vraie question est de
| savoir si je peux utiliser size_t pour les indices des vecteurs.
| Comme je le demandais juste après :
Je crois que j'ai répondu que « int » est l'indice naturel, même si la
norme, dans ses excès d'abstraction, utilise xxx::size_type.
Est-ce que tu utilises
v[vector<T>::size_type(2)]
ou simplement
v[2];