IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

vector<T>::size_type est-il constant en T ?


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 142
    Points : 109
    Points
    109
    Par défaut vector<T>::size_type est-il constant en T ?
    Bonjour,

    Est ce que le type de l'indice utilisé pour accéder aux éléments d'un vector<int> (par exemple) est le même que le type de l'indice utilisé pour accéder aux éléments de vector<double> (ça me semblerait un peu bizarre que ca ne soit pas le cas, mais est ce que je peux compter dessus ?)
    En fait j'ai envie d’écrire quelque chose comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vector<vector< type utilisé pour indexer le vector>> v;
    Et je voulais savoir si je pouvais sortir de cette récurrence par un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    using idx_type = vector<int>;
    vector<vector<idx_type>> v;

  2. #2
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Je ne comprend pas bien ta question, je l'interprète comme "Est-ce que le qualificatif const est propagé à size_type si T est const ?" et la réponse est non, il n'y a pas d'intérêts.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 142
    Points : 109
    Points
    109
    Par défaut
    Non, ce n'est pas ce que je voulais dire, ma question est : est ce que le type de l'indice utilisé pour accéder aux éléments d'un vector<int> (par exemple) est le même que le type de l'indice utilisé pour accéder aux éléments de vector<double> (ça me semblerait un peu bizarre que ca ne soit pas le cas, mais est ce que je peux compter dessus ?)
    En fait j'ai envie d’écrire quelque chose comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vector<vector< type utilisé pour indexer le vector>> v;
    Et je voulais savoir si je pouvais sortir de cette récurrence par un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    using idx_type = vector<int>;
    vector<vector<idx_type>> v;

  4. #4
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par BaygonV Voir le message
    Non, ce n'est pas ce que je voulais dire, ma question est : est ce que le type de l'indice utilisé pour accéder aux éléments d'un vector<int> (par exemple) est le même que le type de l'indice utilisé pour accéder aux éléments de vector<double> (ça me semblerait un peu bizarre que ca ne soit pas le cas, mais est ce que je peux compter dessus ?)
    Oui, c'est garanti*, std::vector<T>::size_type est un typedef sur std::size_t, lui même un typedef sur unsigned long. Un std::size_t sera un entier non signé sur 32/64 bits (32 bits si tu compiles en 32 bits, 64 en 64 bits).

    *En théorie les types peuvent être différent, en pratique c'est les mêmes, sauf sur une éventuelle architecture ou implémentation de la STL exotique.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 142
    Points : 109
    Points
    109
    Par défaut
    Ok merci !

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Si "en théorie ça peut être différent", alors ce n'est pas "garanti". En informatique, on réserve le mot "garanti" à une obligation du standard, et non à la pratique. On peut dire, par contre, que c'est le cas sur toute architecture "normale".

    Et à ma connaissance, size_t n'est jamais un typedef sur unsigned long sous Windows: C'est un typedef sur unsigned int sous Win32, et unsigned long long sous Win64.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/08/2013, 12h05
  2. vector subscript out of range: qu'est-ce ?
    Par sa.mh dans le forum C++
    Réponses: 15
    Dernier message: 22/05/2008, 16h47
  3. Vector, est ce que cela vaut la peine
    Par elekis dans le forum SL & STL
    Réponses: 6
    Dernier message: 11/12/2005, 20h22
  4. variable type tableau (vector) statique / constants
    Par Kaktus dans le forum SL & STL
    Réponses: 5
    Dernier message: 13/10/2005, 22h46
  5. Réponses: 17
    Dernier message: 03/10/2005, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo