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 :

Méta-Programmation - [ structures de données ]


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Méta-Programmation - [ structures de données ]
    Bonsoir à tous,

    j'aimerai tout d'abord profiter de ce message pour féliciter loulou24 pour son article sur la méta-programmation en C++ car il m'a largement éclairici sur le sujet.

    Cependant, une question me taraude : si je ne dis pas de bétises la STL utilise cette méthodologie de programmation. Or celle-ci s'appuie sur un schéma Structures de Données - Itérateurs - Algorithmes.
    Les structures de données sont généralement remplies lors de l'exécution du programme. (imaginons une scène 3D, on clique sur l'écran et on remplit un vector pour sauvegarder les coordonnées du point cliqué).
    D'après ce que j'ai compris, toute la partie méta-programmation se passe dans la partie compilation et cela fournit le code prêt à être exécuter. Comment est il possible de remplir une structure de données lorsque notre programme est en cours d'exécution ?

    Je sais que je n'arrive pas à être très clair, j'avoue être encore novice dans ce domaine et beaucoup de choses me semblent encore obscures !

    Merci à tous pour vos réponses.

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    La STL n'utilise pas par elle même de métaprogramming.

    Pour ce qui est de l'aspect exécution du code pendant le run-time, il est évident qu'il va falloir du vrai code, mais il y a plein de choses que pour des raisons de généricité on ne va pas optimiser directement lors d'une écriture classique. La métaprogrammation va pouvoir l'optimiser tout seul. Par exemple, si A, B, C et D sont des vecteurs de taille 3, le code :
    Ecrit classiquement est non optimisé. Si l'on voulait écrire à la main le code optimisé, il faudrait un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A[0]=B[0]+C[0]*D[0];
    A[1]=B[1]+C[1]*D[1];
    A[2]=B[2]+C[2]*D[2];
    La métaprogrammation permet d'écrire le code simple, et de générer tout seul le code optimal.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 671
    Points
    10 671
    Billets dans le blog
    3
    Par défaut
    D'après ce que j'ai compris, toute la partie méta-programmation se passe dans la partie compilation et cela fournit le code prêt à être exécuter. Comment est il possible de remplir une structure de données lorsque notre programme est en cours d'exécution ?
    Je ne comprends pas trop ta question.
    vector c'est un template qui manipule un type générique abstrait. Imaginons que tu veuilles stocker des flottants, tu vas spécialiser le type vector pour les float:
    vector<float>
    et ensuite tu pourras l'utiliser comme si ça n'avait jamais été un template mais une classe tableau de float. Tu appelles ensuite les fonctions de remplissage normalement.
    http://c.developpez.com/faq/cpp/?pag...#TEMPLATES_def
    Le terme type paramétré traduit bien ce qu'est un template.

  4. #4
    mat.M
    Invité(e)
    Par défaut
    Comment est il possible de remplir une structure de données lorsque notre programme est en cours d'exécution ?
    : : :

    C'est le BA BA de la programmation !
    Avec un fichier lu sur disque ou bien avec des valeurs constantes ou aléatoires par exemple.
    J'avoue ne pas piger


    (imaginons une scène 3D, on clique sur l'écran et on remplit un vector pour sauvegarder les coordonnées du point cliqué).
    Qu'est-ce que tu veux faire comme projet quelle est la problèmatique ?
    Effectivement un std::vector c'est bien pour mémoriser des points

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/11/2014, 21h21
  2. Aide programme structure données !
    Par onlinematchs dans le forum C
    Réponses: 6
    Dernier message: 11/04/2011, 19h30
  3. La programmation des structures de données
    Par wafiwafi dans le forum Langages de programmation
    Réponses: 16
    Dernier message: 01/01/2010, 20h07
  4. Structure de données de type "RECORD"
    Par chaours dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/09/2002, 17h10

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