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 :

Surcharge opérateur std::vector


Sujet :

C++

  1. #21
    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
    Bonsoir,
    Citation Envoyé par Luc Hermitte Voir le message
    Pour le transform, on n'y gagne pas en lisibilité je trouve.
    Je concède qu'il s'agit pour moi d'une préférence de style et que par conséquent j'en finis par mieux lire les intentions d'un algorithme explicite que d'une boucle à déchiffrer. Par contre, clairement, les functional à la C++ 98 restent moins clairs qu'un bon lambda C++11
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     std::transform(this_.begin(),this_.end(),this_.begin(),[v_](Ty el_){return el_*v_;});

  2. #22
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    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 296
    Par défaut
    Ici, c'est la for-range loop qui l'emporte pour moi. J'ai moins de parasitage syntaxique.
    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...

  3. #23
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Idem.

  4. #24
    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
    Citation Envoyé par Luc Hermitte Voir le message
    Ici, c'est la for-range loop qui l'emporte pour moi. J'ai moins de parasitage syntaxique.
    C'est un peu HS et beaucoup du pinaillage, mais j'aime de moins en moins les for. Pourquoi ? Car le bloc fait souvent beaucoup de chose à l'intérieur de la boucle et ce qui est fait n'est souvent pas immédiat. Même ici, avec un brin d'entêtement, j'argue qu'un std::transform m'indique tout de suite que je vais appliquer une fonction sur les éléments du vecteur. Ce que ne me dit pas forcément le for où il me faut analyser la boucle pour la comprendre.

    Allez continuons dans le pinaillage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for( std::size_t i = 0; i < this_.size(); ++i) this_[i]*= v_;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for( std::size_t i = 0; i < this_.size(); ++i) this_[i]= v_;
    fighting :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     std::transform(this_.begin(),this_.end(),this_.begin(),[v_](Ty el_){return el_*v_;});
    vs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     std::fill(this_.begin(),this_.end(),v_);
    Sur laquelle des deux approches je vais faire une faute de frappe qui va péter qu'en testU ?

  5. #25
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    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 296
    Par défaut
    J'ai trop de paramètres pour apprécier cette fonction.
    En viml (je connais mal les langages fonctionnels, mais je soupçonne la même chose), j'aurais eu:
    Code viml : Sélectionner tout - Visualiser dans une fenêtre à part
    call map(this_, 'v:val * v_');
    et cela m'aurais moins géné. Car moins de paramètres, déductibles, impliquent une meilleure lisibilité.

    Accessoirement, dans le for, *= est très percutant je trouve. Mais bon.
    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...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Problème de surcharge d'opérateur std::cout
    Par Nyko17 dans le forum C++
    Réponses: 14
    Dernier message: 28/04/2008, 13h01
  2. Réponses: 3
    Dernier message: 04/12/2006, 13h01
  3. char[50] et std::vector<>
    Par tut dans le forum SL & STL
    Réponses: 9
    Dernier message: 12/10/2004, 13h26
  4. Réponses: 8
    Dernier message: 26/08/2004, 18h59
  5. Sauvegarde std::vector dans un .ini
    Par mick74 dans le forum MFC
    Réponses: 2
    Dernier message: 12/05/2004, 13h30

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