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

SL & STL C++ Discussion :

surcharges de std::iterator_traits


Sujet :

SL & STL C++

  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut surcharges de std::iterator_traits
    Bonjour,

    Je me posais une question : j'utilise pas mal les traits dans le code que je fais.
    Quand on regarde l'implémentation de Visual 2005 de la STL, on voit que les iterator_traits sont surchargés sur les const T * et T*, naturellement.

    Mais pourquoi font ils des surcharges sur des types comme char, signed char, unsigned char, wchar_t, short, unsigned short, int

    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	typedef _Int_iterator_tag iterator_category;
    	typedef unsigned int value_type;
    	typedef unsigned int difference_type;
    	typedef unsigned int distance_type;	
    	typedef unsigned int * pointer;
    	typedef unsigned int& reference;
    J'utilise souvent les dérivations de std::iterator<> avec les tags qui vont bien, mais le tag _Int_iterator_tag par exemple, connais pas.

    Quelle est l'utilité ?

    Sylvain

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Ce sont des classes traits utilisées par visual pour sa cuisine interne. Je ne suis pas sur qu'il faille les utiliser dans tes programmes. Tu risque de perdre en portabilité et tu prends le risque d'une modification future de visual. Normalement, tu devrais te contenter de l'interface 'officielle'.

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut Merci
    J'essaie simplement de rentrer au plus dans le fonctionnement de la stl, ou au moins d'une implémentation. Seulement, celle de VS est plus obscure que celle de gcc.
    S.

  4. #4
    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
    Ce n'est certainement pas de la cuisine interne de Visual C++.
    C'est la manière standard dont sont définis les itérateurs. Tout itérateur doit fournir ces traits.

  5. #5
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut
    Hum, Loufoque, je ne pense pas que la catégorie d'itérateur soit une catégorie standard. En tous cas elle n'est pas dans la stl de gcc 4.1.3 .
    Tu as du lire la première question en diagonale.

    L'implémentation interne de la STL de Microsoft a une catégorie d'itérateur "type intégral", surchargée pour chaque type intégral. Je me demandais à quoi ça servait.

    S.

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Effectivement, il y un mélange entre iterator_traits qui font partis de la STL et _Int_iterator_tag qui est l'implémentation spécifique de MS.

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

Discussions similaires

  1. Surcharge opérateur std::vector
    Par boutor dans le forum C++
    Réponses: 24
    Dernier message: 31/08/2011, 15h00
  2. surcharger std::endl ?
    Par ambroise_petitgenet dans le forum SL & STL
    Réponses: 2
    Dernier message: 28/03/2009, 14h47
  3. Problème de surcharge d'opérateur std::cout
    Par Nyko17 dans le forum C++
    Réponses: 14
    Dernier message: 28/04/2008, 13h01
  4. Surcharge d'opérateur << et std::endl;
    Par Tourix dans le forum SL & STL
    Réponses: 7
    Dernier message: 29/06/2006, 17h58
  5. Réponses: 8
    Dernier message: 20/11/2002, 11h50

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