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 :

Différence entre size_type et un int ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut Différence entre size_type et un int ?
    Bonsoir,

    Je souhaiterais juste savoir quelle est la différence entre ça :

    std::vector <T>::size_type size & tout simplement int (par exemple pour récupérer la taille d'un vecteur).

    En effet je suis en train de lire un autre livre de C++ pour m'améliorer (très bon d'ailleurs), et ils utilisent à chaque fois ce size_type (std::string::size_type, vector <T>::size_type, que ce soit dans les boucles ou pour récupérer une valeur). De même ils utilisent parfois un size_t au lieu d'un int par exemple.

    Pourquoi ces différences, que faut-il mieux utiliser ?

    Et niveau portabilité ? Sur une plate-forme 64 bits, un int fera 64 bits tandis que sur une plate-forme 32 bits il fera 32 bits, est-ce pareil pour ces types là ?

    Merci

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Tu l'as dis toi même, c'est une question de portabilité.
    Il me semble avoir déjà vu à ce sujet des warnings dans VC2005 qui préviennent d'une mauvaise compatibilité avec un OS 64 bits quand on utilise 'int'.

    Il faudrait vérifier dans plusieurs implémentations STL, mais y'a fort à parier que 'size_type' soit généralement de type 'unsigned int'.
    La définition de 'size_type' peut aussi éventuellement varier d'un container à l'autre. (exemple un peu tiré par les cheveux: pour un container qui peut avoir plus d'éléments qu'un 'int' n'a de valeurs)
    A propos il existe aussi 'difference_type' qui est forcément signé contrairement à 'size_type'

    Ceci dit, il m'arrive fréquemment d'utiliser un 'int' à la place d'un 'size_type', c'est tellement plus concis, par ex: for (int=0, imax=X.size(); i<imax; ++i)...

    Et tous les containers que je programme définissent 'size_type' et 'différence_type' comme étant des 'int', puisque justement la taille de 'int' varie d'un OS à l'autre.

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Euh ce serait plutôt size_t que unsigned int...
    Car size_t est justement défini comme étant un entier suffisamment grand pour contenir la taille de n'importe quel objet, ce qui correspond parfaitement aux besoins voulus.
    Avec un int sur x86_64 par exemple, tu ne pourrais pas avoir d'objet plus grand que 4 Gio alors que l'architecture le permet.

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Bakura
    Je souhaiterais juste savoir quelle est la différence entre ça :

    std::vector <T>::size_type size & tout simplement int (par exemple pour récupérer la taille d'un vecteur).
    size_type est un type non signé, int signé.
    size_type est choisi de manière à pouvoir représenter toute différence de pointeur ainsi que le nombre d'éléments.
    int est ce qu'il est.

    En effet je suis en train de lire un autre livre de C++ pour m'améliorer (très bon d'ailleurs), et ils utilisent à chaque fois ce size_type (std::string::size_type, vector <T>::size_type, que ce soit dans les boucles ou pour récupérer une valeur). De même ils utilisent parfois un size_t au lieu d'un int par exemple.

    Pourquoi ces différences, que faut-il mieux utiliser ?
    size_t ou size_type (qui souvent est en fait size_t).

    Et niveau portabilité ? Sur une plate-forme 64 bits, un int fera 64 bits tandis que sur une plate-forme 32 bits il fera 32 bits, est-ce pareil pour ces types là ?
    Sur une plateforme 64 bits, généralement les int font quand même 32 bits et les size_t font généralement 64 bits.

  5. #5
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Ok merci des infos, j'utiliserai les size_type à présent alors .

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

Discussions similaires

  1. Différence entre ExitCode et int Maint()
    Par BenoitM dans le forum Débuter
    Réponses: 1
    Dernier message: 27/08/2009, 16h28
  2. [Validate] Différence entre Digits et Int
    Par dorian53 dans le forum Autres composants
    Réponses: 3
    Dernier message: 31/03/2009, 14h37
  3. différence entre int et char
    Par hassiba_45 dans le forum C++
    Réponses: 4
    Dernier message: 12/06/2008, 21h53
  4. Différences entre 2 int[] arrays ?
    Par Danny Blue dans le forum ASP.NET
    Réponses: 1
    Dernier message: 30/11/2007, 23h27
  5. Différence entre String et Int
    Par Alchimist dans le forum Langage
    Réponses: 6
    Dernier message: 05/04/2006, 11h00

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