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

Boost C++ Discussion :

mpl::vector : remplacer le n°ième type


Sujet :

Boost C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 13
    Points
    13
    Par défaut mpl::vector : remplacer le n°ième type
    Bonjour,

    Ayant à ma disposition un mpl::vector, je souhaiterai modifier le n°ième type.

    J'aurais par exemple voulu écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    typedef mpl::vector<int,double> vector_t;
    //! remplacer l'élément d'indice 0 par le type float.
    typedef replace<vector_t,0,float>::type new_vector_t;
    Je n'ai pas trouvé cette fonctionnalité dans la mpl ( une fonction se rapprochant de ça est la fonction replace : replace<V,T1,T2,Inserter> qui remplace toutes les occurences de T1 par T2 ).

    Je pense qu'une solution serait de recopier le vector avec un parcours récursif et lorsqu'on est sur le n°ième élément, remplacer par le nouveau type.
    Mais peut-être y-a-t-il plus simple ?

    Merci pour votre aide.

  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
    Bonjour

    Tu peux y arriver avec insert et erase, qui prennent des positions dans un mpl::vector

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mpl::insert<S, pos, X>::type // insert un élément
    mpl::erase<S, pos>::type // supprime un élément
    Bon courage

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup, c'est juste ce qui me manquait !

    ++

    Edit :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //! avec V la typeliste
    typedef typename mpl::advance< typename mpl::begin<V>::type , typename mpl::int_<indice>::type >::type iterator;
    typedef typename mpl::insert<V,iterator, NouvelleValeur > ::type tmp;
    typedef typename mpl::advance< typename mpl::begin<tmp>::type , typename mpl::int_<indice+1>::type >::type iterator2;
    typedef typename mpl::erase<tmp, iterator2 >::type tmp2;

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/09/2011, 18h31
  2. Remplacer tous les types de sauts de lignes et de paragraphes ?
    Par Mister Paul dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/06/2011, 12h10
  3. [RegEx] Remplacer tous les types de sauts de lignes et de paragraphes
    Par Mister Paul dans le forum Langage
    Réponses: 2
    Dernier message: 28/06/2011, 22h59
  4. [RegEx] Remplacement de balises type BBCode couleur
    Par Décibel dans le forum Langage
    Réponses: 11
    Dernier message: 29/04/2008, 09h12
  5. variable type tableau (vector) statique / constants
    Par Kaktus dans le forum SL & STL
    Réponses: 5
    Dernier message: 13/10/2005, 22h46

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