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 :

[STL] for_each et transform


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut [STL] for_each et transform
    Bonjour je voulais juste quelque precision sur for_each et transform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    struct A {  void F() {std::cout << "salut" << std::endl;} };  
    int main() 
    {  
    std::vector<A> v(3);   
    std::for_each(v.begin(), v.end(), std::mem_fun_ref(&A::F));
     }
    la fonction utilisé par for_each et transform est obligatoirement de la forme void F() ??

    Y as t'il une manière propre pour qu'un élément du conteneur connaisse ces voisins?

    merci

  2. #2
    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
    la fonction utilisé par for_each et transform est obligatoirement de la forme void F() ??
    for_each prend un foncteur (une fonction généralisée, il s'agit tout simplement d'un objet appelable, quel que soit son type) avec une signature void F(T&).

    Ce qui est ce que tu lui as fourni ici.
    std::mem_fun_ref(&A::F) génère un foncteur qui va prendre en argument un objet de type A et y appliquer la fonction membre sans argument A::F.

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par loufoque
    for_each prend un foncteur (une fonction généralisée, il s'agit tout simplement d'un objet appelable, quel que soit son type) avec une signature void F(T&).

    Ce qui est ce que tu lui as fourni ici.
    std::mem_fun_ref(&A::F) génère un foncteur qui va prendre en argument un objet de type A et y appliquer la fonction membre sans argument A::F.
    A ok. en faite c'est std::mem_fun_ref(...) qui va générer le foncteur, et lui indiquer qu'il n'y as pas de paramètres.

    Par contre, est'il possible d'utiliser une signature de type
    void F(std::vector<A>::iterator &), ce qui permettrai d'avir accés pour un élément donné, a ces voisin?
    ou mieux, d'avoir un accés direct au contener(peut etre utile pour un vector. Pour les autre je vois pas)

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Pour etre plus preci,

    si j'utilisais un vector comme buffer d'une image
    et que je voulais appliquer un filtre 3*3 avec for_each.

    Es ce possible?
    Cela ne fait partie de la philosophie de for_each ou transforme?
    Il faut utiliser un foncteur precis?

  5. #5
    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
    Utilise une boucle for explicite, tu ne peux pas faire ça avec for_each.
    for_each te donne un accès aux valeurs de ton conteneur, et ne donne pas d'itérateurs.

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par loufoque
    Utilise une boucle for explicite, tu ne peux pas faire ça avec for_each.
    for_each te donne un accès aux valeurs de ton conteneur, et ne donne pas d'itérateurs.

    c'est bien ce que je pensai... du coup je ne voit pas l'interet de for_each ...
    a par simplifier l'ecriture du for

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

Discussions similaires

  1. Transformer STL en *.obj
    Par Lost in dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 28/01/2010, 18h41
  2. [STL] tutoriels sur for_each, transform, foncteur
    Par yan dans le forum SL & STL
    Réponses: 4
    Dernier message: 26/07/2007, 13h41
  3. [STL][algorithm]for_each vs transform
    Par r0d dans le forum SL & STL
    Réponses: 6
    Dernier message: 25/07/2007, 11h52
  4. pb for_each stl
    Par CedricMocquillon dans le forum SL & STL
    Réponses: 4
    Dernier message: 03/05/2007, 09h50
  5. [Debutant][STL] For_each instance
    Par Mucho dans le forum SL & STL
    Réponses: 2
    Dernier message: 17/03/2006, 16h29

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