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 :

La bibliothèque standard du C++ [Tutoriel]


Sujet :

C++

  1. #1
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut La bibliothèque standard du C++
    Bonjour

    Vous pouvez poster ici vos commentaires concernant l'article : La bibliothèque standard du C++

    Remarque : cet article date de 1999 et les informations qu'il contient sont en partie obsolètes. N'hésitez pas à poser des questions sur le forum en cas de doute.

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Reçu par mail :
    Bonjour,
    je n'ai pas trouvé d'entrée sur le forum C++ relatif au tutoriel http://cpp.developpez.com/cours/stl/. Une petite erreur s'y est glissée, dans le tableau 3.2, il est dit que "La méthode at effectue exactement la même opération que l'opérateur crochets". Il sera peut-être judicieux d'expliciter et d'expliquer que at fait les test de taille du tableau (et renvoie out_of_range si c'est pas bon) alors que [] ne le fait. (Source : http://www.cplusplus.com/reference/v...perator%5B%5D/ )
    Voilà, merci pour tout,
    XXX
    Bonjour

    Je ne suis pas sur qu'il s'agisse d'une erreur. L'article date de 1999 et il est possible qu'à cette époque, il n'y avait pas de distinction entre at() et l'opérateur [] (c'est trop ancien, il faudrait attendre des devs C++ plus anciens que moi)
    Dans la norme actuelle (C++11) et la précédente (C++03), il y a bien une différence entre des deux fonctions (bien qu'il me semble que tous les compilateurs ne sont pas - ou n'ont pas été - respectueux de la norme sur ce point et qu'ils testaient les bornes avec l'opérateur [])

    Concernant l'article, seul l'auteur peut faire ce type de modification, donc on doit laisser tel quel.

    Merci du signalement

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour cette réponse, claire et rapide.
    Cordialement,

  4. #4
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 011
    Points
    11 011
    Par défaut
    En 98, at() devait vérifier les bornes et lever une exception.
    [] a toujours été libre de faire comme il l'entendait: il y a une précondition (bornes valides) et le non respect est et a toujours été une UB (undefined behaviour). Donc libre aux implémentations de balancer une exception (peu probable), de ne rien faire (le plus répandu), de claquer des assertions (la chose que j'aurai aimé universelle) ou d'inventer des checked-STL, ou de renvoyer une constante prédéfinie (tiens, ça je ne l'avais jamais vu)

    Concernant l'article
    a- s/librai?rie/bibliothèque

    b- les faits historiques ne sont pas bons. La lib standard == fusion entre lib C, STL, streams (j'ai un vague souvenir des flux avec TC++3.0 et la STL n'existait pas), plus d'autres additions inspirées parfois par la STL (string).
    La FAQ est plus correcte.

    c- les arguments de portabilité n'ont plus lieu d'être
    De plus parler de "STL" au lieu de la lib standard me fait tiquer.

    d- <non, il n'y a pas de point d>

    e- des remarques déplacées "pas de contrôle de visibilité dans les espaces de noms" alors qu'il suffit de cacher les symboles à cacher (sic) dans l'unité de traduction avec des espaces de noms anonymes.

    f- un cours sur les espaces de noms n'a que peu de rapport avec un tuto sur la lib standard

    g- depuis quand std::exception ne fait pas parti de std ?

    h- Beaucoup de remarques qui datent d'une époque où la norme venait juste de sortir.
    Un peu comme si on truffait de nouveaux articles de commentaires sur l'utilisabilité de telle ou telle chose venant du C++11 parce que les compilateurs ne sont pas encore à jour.

    i- II-B-2 -> string.h est clairement connu

    j- Je pinaille, mais non la STL ne propose pas std::string ; t le fichier d'en-tête n'est clairement pas string.h

    k- s/Steeve Coplien/Jim O. Coplien/ j'imagine
    Et non le COW n'est plus en odeur de sainteté.

    l- diagnostic, le nom masculin ne s'écrit pas en -que.

    m- II-D-1 "classe virtuelle pure" n'existe pas. C'est classe abstraite, dont toutes les fonctions membres sont virtuelles pure, ou classe de base virtuelle (et c'est la base qui est virtuelle, car relatif à un héritage donné)

    n- La classe rationnel
    - utilise des specification d'exception -> c'est le mal
    - a des mutateurs de membres (pourquoi faire, la copie est triviale, et il existe un constructeur)
    - bouh les vilains exit
    - tableau dynamique au lieu de vector ... dans un article sur la lib standard ; certes cela permet d'illustrer bad_alloc et de parler des exceptions vs code de retour ignorés

    o- II-E-
    WTF ? Le RTTI fait parti du C++98, non ?

    p- vector::operator[] ne claque pas un out_of_range

    q- s/DQ/deque

    r- III-B-2, resize n'est pas sur tous les conteneurs.

    s- III-B l'intro n'est pas claire


    Je n'ai pas trop le temps de regarder le reste.
    Il y a du boulot de mise à niveau à faire.

    EDIT: pardon, je pensais qu'il s'agissait d'une proposition de relecture d'un article pour éventuelle modif (ce qui ne peut être fait que par l'auteur si pas sous creative commons; j'avais aussi zappé sur le coup). Au temps pour moi. N'hésitez pas à modérer et virer les commentaires orientés relecture.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    EDIT: pardon, je pensais qu'il s'agissait d'une proposition de relecture d'un article pour éventuelle modif (ce qui ne peut être fait que par l'auteur si pas sous creative commons; j'avais aussi zappé sur le coup). Au temps pour moi. N'hésitez pas à modérer et virer les commentaires orientés relecture.
    Comme j'ai ajouté un lien vers cette discussion en début d'article, il est au contraire intéressant pour les lecteurs d'avoir tes commentaires, donc je laisse

Discussions similaires

  1. ajouter strlcpy à la bibliothèque standard cyg1.7
    Par J4e8a16n dans le forum Bibliothèque standard
    Réponses: 1
    Dernier message: 25/04/2009, 12h23
  2. Réponses: 4
    Dernier message: 18/12/2007, 21h54
  3. Réponses: 2
    Dernier message: 19/09/2007, 17h37
  4. Réponses: 2
    Dernier message: 19/12/2006, 12h45
  5. Le type Arbre binaire dans les bibliothèques standards ?
    Par sam69 dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 10/05/2006, 13h50

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