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

Langage C++ Discussion :

Template, Container Sequence, Vector et Deque


Sujet :

Langage C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 117
    Points : 61
    Points
    61
    Par défaut Template, Container Sequence, Vector et Deque
    Bonjour !
    J'ai des fonctions qui prennent des deque en paramètres (besoin d'ajout au début et à la fin), mais je voudrai les rendre utilisable avec des vecteurs sans avoir à dédoubler le code ...

    J'avais débord regarder si un type supérieur existait. On parle bien de Concept de Sequence, mais rien d'implémenté si j'ai bien compris.

    Du coup je regarde du côté des templates mais j'ai un petit problème...
    Voici un exemple des fonctions que j'ai actuellement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void functionBlabla(const std::vector<typeA>& blabla)
    {
    //code fonctionBlabla pour typeA
    }
     
    void functionBlabla(const std::vector<typeB>& blabla)
    {
    //code fonctionBlabla pour typeB (code complètement différent de celui pour le typeA)
    }
    Je voudrai obtenir un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    template <class SequenceClass>
    void functionBlabla(const SequenceClass<typeA>& blabla)
    {
    //code fonctionBlabla pour typeA
    }
     
    template <class SequenceClass>
    void functionBlabla(const SequenceClass<typeB>& blabla)
    {
    //code fonctionBlabla pour typeB (code complètement différent de celui pour le typeA)
    }
    Le compilo n'a pas l'air d'accepter :S
    Est-ce que quelqu'un a déjà rencontré le problème ou a une idée pour le contourner ?

    Merci d'avance

  2. #2
    En attente de confirmation mail

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Points : 3 311
    Points
    3 311
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    template <template<class> class SequenceClass>
    C'est la syntaxe pour les paramètre template template.

  3. #3
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Les paramètres par défaut ne sont pas pris en compte dans le cas de paramètre template template et il faut que ça match exactement les paramètres, ça marchera pas ton écriture.
    Sa par contre oui :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    template< template<typename T,
    		   typename Alloc = std::allocator<T> >
    	  class Container =  std::deque>
    // ... //
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  4. #4
    En attente de confirmation mail

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Points : 3 311
    Points
    3 311
    Par défaut
    Ha oui j'avais complétement oublié la présence de l'allocateur, merci Goten.

  5. #5
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Que doit faire ta fonction ? Avec un peu de chance, si elle doit juste parcourir le conteneur sans le modifier (ce a quoi ej pense a la vu des signatures), tu peux demander avec une paire d'iterateur et fini les problemes
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  6. #6
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Ou mieux un range
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

Discussions similaires

  1. Template container en C++
    Par NoVGAcable dans le forum C++
    Réponses: 8
    Dernier message: 04/06/2014, 17h35
  2. Bonne pratique des templates - Container
    Par LittleWhite dans le forum C++
    Réponses: 5
    Dernier message: 04/09/2012, 17h55
  3. template et std::vector
    Par themadmax dans le forum Langage
    Réponses: 9
    Dernier message: 26/07/2006, 10h41
  4. Réponses: 13
    Dernier message: 03/10/2005, 18h06
  5. difference entre vector, deque, list et tableau
    Par salseropom dans le forum SL & STL
    Réponses: 8
    Dernier message: 03/01/2005, 13h35

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