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 :

vie d'un pair < >


Sujet :

C++

  1. #21
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Déclarer i en std::size_t ? Ou plus simplement itérer avec un itérateur plutôt qu'un indice ?

    *(arrivee.begin() + i)
    Bel emberlificotement pour signifier arrivee[i]

  2. #22
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par seriousme
    Car on lit une zone mémoire qui peut être réutilisée pour stocker d'autres variables, puisqu'elle n'est plus réservé pour le "pair" créé dans la fonction.
    Moi c'est ce qu'on m'avait appris à l'école, que l'espace n'étant plus reservé, on perdait l'information... Maintenant, c'était à l'époque des pointeurs...
    est-ce que je pourrai avoir plus d'info là dessus, car c'est pas très clair

    Merci !

    @Laurent: ben oui, j'avais pas fait gaffe, mais tu as complètement raison! Parti dans le feu de l'action...

  3. #23
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    on perdait l'information
    Si je ne me trompe la zone est accessible mais il n'y a aucune garantie que les données stockées précedemment y soit toujours, et encore moins qu'elle le resteront.

  4. #24
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int *buf = newint[4*a+1];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int *buf = new int[4*a+1];
    peut être.

  5. #25
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par seriousme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int *buf = newint[4*a+1];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int *buf = new int[4*a+1];
    peut être.
    non ça c'est le copier/coller qui marche pas bien....
    Mais je vais chercher !

    Merci!

  6. #26
    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
    Vu que dans ce cas, il n'y a pas de copie....
    Les compilateurs modernes ne feront de toutes façons pas de copie.

    Sinon pour ton problème avec i, il faut mettre std::vector < std::pair <int, int> >::size_type et non int.

  7. #27
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par seriousme
    Si je ne me trompe la zone est accessible mais il n'y a aucune garantie que les données stockées précedemment y soit toujours, et encore moins qu'elle le resteront.
    Donc pour toi, c'est une betise de faire le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    
    template <typename T> std::pair<float, float> pointInterpolation(std::pair <int, int>& H, std::vector< std::pair <int, int> >& depart, const cimg_library::CImg<T>& u, constfloat coeff_mul) {
    std::pair<float, float> H_v; //vecteur déplacement pour le point à remplir
    int a = depart.size();
    /* Allocation dynamique de mémoire */
    std::vector< std::pair <int, int> > pointschoisis;
    // calcul des points nécessaires pour l'interpolation
    nProchePoints(H, depart, NBPOINTSCHOISIS, pointschoisis);
    int x,y; // point de controle regardé
    float d; // distance entre le point courant et le point de controle
    float D=0; // distance totale
    float v_x,v_y; // vecteur déplacement du point de controle
     
     
     
     
    
    for (int i=0; i<NBPOINTSCHOISIS; i++ ) {
    x = pointschoisis[i].first; y = pointschoisis[i].second; v_x = u(x,y,0); v_y = u(x,y,1); d = dist(H, pointschoisis[i]); D+=1/d;
    // pour la normalisation H_v.first += v_x / d; H_v.second += v_y / d;
    } H_v.first = H_v.first/D; H_v.second = H_v.second/D; return H_v; }
    Ais-je donc intérêt à faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float * H_v = new float[2];
    ou alors comme je l'ai fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::pair <int, int> H_v;
    Le but étant, au final, que ma fonction renvoi quelque chose de non vide pour la suite !!!!!!! ^^
    C'est très important pour moi que vous mettiez d'accord sur le fait qu'on puisse au non procèder comme je l'ai fait dans ce petit bout de code!
    Merci beaucoup pour vos éclaircissements !

  8. #28
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    euh... personne pour m'éclaircir??? ne serait-ce qu'un tout petit peu...

  9. #29
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Non, c'est très bien comme ça.

  10. #30
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    bon ok, merci

    Mais la remarque de seriousme ?

    Je marque quand même résolu...

  11. #31
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Je parlais du cas des variables locales statiques.
    Pour ce qui est des "pair" et autres objets dynamiques apparemment il n'y a pas les mêmes problèmes.

  12. #32
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Pour ce qui est des "pair" et autres objets dynamiques apparemment il n'y a pas les mêmes problèmes
    il n'y a rien de dynamique là-dedans... Honêtement je crois que tu embrouilles tout le monde pour rien, là

  13. #33
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Citation Envoyé par Laurent Gomila
    il n'y a rien de dynamique là-dedans... Honêtement je crois que tu embrouilles tout le monde pour rien, là
    Ce que j'appelle objet dynamique ce sont les objets redimensionnable après compilation, ce qui est le cas des conteneurs de la STL, non?
    Je n'utilise peut être pas les bon termes.

  14. #34
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Un std::pair n'a rien de dynamique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    namespace std
    {
        template <typename T, typename U>
        struct pair
        {
            T first;
            U second;
        };
    }

  15. #35
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 311
    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 311
    Par défaut
    Dès que tu as une sémantique de valeur (copiabilité + comparabilité), et plus précisément les opérations de copie, le retour par copie est ... OK. Surprenant, non?
    Dès que tu as une sémantique de référence (des pointeurs), il faut commencer à réfléchir.

    std::pair<> tente de s'appropier l'éventuelle sémantique de copie de ce qu'elle contient. Si le truc à l'intérieur est copiable. Tout va bien. Si le truc à l'intérieur est un pointeur, il faut réfléchir.

    Tous les conteneurs standard, et nombre de ceux qui s'en inspirent, sont copiables.
    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...

  16. #36
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Citation Envoyé par Laurent Gomila
    Un std::pair n'a rien de dynamique.
    En effet.

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

Discussions similaires

  1. VB.NET vs C# vs Java ou existe-t-il une vie après Visual Basic 6 ?
    Par B-Pascal dans le forum Débats sur le développement - Le Best Of
    Réponses: 32
    Dernier message: 05/07/2007, 13h46
  2. XSL nombre pair de pages
    Par Urthgard dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 25/06/2004, 11h45
  3. [CR8.5] Détail Paires/Impaires
    Par PAC76 dans le forum Formules
    Réponses: 6
    Dernier message: 28/05/2004, 12h08
  4. Calculer la parité paire d'un char
    Par James_ dans le forum C
    Réponses: 15
    Dernier message: 04/09/2003, 00h55
  5. Réponses: 4
    Dernier message: 30/06/2002, 21h23

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