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 :

Stockage dynamique d'éléments: Choix d'un conteneur


Sujet :

C++

  1. #21
    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
    sans pointer pas de polymorphisme, rien ...
    Sans pointeur pas de polymorphisme, en effet, mais cela ne signifie pas "rien". Dans le cas présent, il n'y avait a priori aucun élément polymorphe.
    Pour cela de toutes façons il existe des solutions comme les conteneurs de boost spécialement conçus pour, ou alors les pointeurs intelligents.

    et on peut s'occuper de la gestion memoire pour ne pas avoir "de fuite"
    Le seul moyen d'écrire du code exception-safe de manière convenable est d'utiliser les destructeurs.

    les pointers font partie du language et il faut faire avec,
    Les pointeurs sont une chose à éviter en C++, car ce sont des outils dangereux.
    Ils ne sont à utiliser tels quels à mon sens que pour la création de structures de données ou pour des cas sans allocation dynamique.

    j'ai l'impression que beaucoup de personnes aimeraient bien faire du Java en C++...
    Justement non.
    C'est en Java que tout est un pointeur, pas en C++.
    Si tu veux faire comme en Java, ce qui devient possible avec un ramasse-miettes, tu gâches un peu les possibilités du C++.

  2. #22
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    les pointers ne sont pas a eviter bien au contraire, sinon pas de polymorphisme et donc un au revoir a beaucoup d'avantages.

    il ne faut pas non plus en avoir peur et simplement en tirer avantage.
    les shared_ptr ne sont pas non plus une solution a tout. ils induisent en outre une perte de performance et une augmentation memoire. mimimes dans certains cas, penalisantes pour d'autre.

    Je n'ai pas bien compris "Le seul moyen d'écrire du code exception-safe de manière convenable est d'utiliser les destructeurs."

    quel rapport avec les pointers ? tu parles peut-etre des auto_ptr ?

    Oui je le repete, beaucoup de gens veulent le C++ (pour le prestige?) sans avoir a gerer la memoire (a la Java en fait). Mais le C++ tire sa flexibilité des pointers et de la gestion manuelle de la memoire, c'est ce qui permet de faire au mieux les structures de données.

    ... mais ce n'est que mon avis, d'apres mon experience.

    A+

  3. #23
    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
    les pointers ne sont pas a eviter bien au contraire, sinon pas de polymorphisme et donc un au revoir a beaucoup d'avantages.
    Les pointeurs sont à éviter parce qu'ils sont dangereux.
    Il semble que tu n'aies pas entendu parler des principes de base pour du bon C++ : RAII (Resource Acquisition Is Initialization), SBRM (Scope Bound Resource Management)...

    les shared_ptr ne sont pas non plus une solution a tout. ils induisent en outre une perte de performance et une augmentation memoire. mimimes dans certains cas, penalisantes pour d'autre.
    Je n'en ai jamais ressenti le besoin, n'ayant pas besoin de ressource dont l'appartenance est partagée par plusieurs objets, mais j'imagine que ça simplifie certains cas, autrement moins triviaux que ceux dont on parle, étant donné que ça introduit un ramasse-miettes déterministe.
    De toutes façons je n'ai jamais parlé de ça en particulier. La solution aux conteneurs polymorphes c'est les conteneurs pour pointeurs de boost. Pour d'autres cas on peut avoir besoin de std::auto_ptr ou autre.

    Je n'ai pas bien compris "Le seul moyen d'écrire du code exception-safe de manière convenable est d'utiliser les destructeurs."
    Peut-être ne sais-tu pas ce qu'est l'exception safety.
    Voici donc un extrait de TC++PL [en] qui pourrait t'aider dans ce cas.


    quel rapport avec les pointers ?
    La mémoire libre allouée avec "new" ne se libère pas toute seule.
    Enfin le rapport est tellement évident que je me demande pourquoi tu poses cette question.

    Oui je le repete, beaucoup de gens veulent le C++ (pour le prestige?) sans avoir a gerer la memoire (a la Java en fait).
    C++ et Java sont des langages différents, et qui donc ont des façons différentes de conceptualiser les choses.
    En particulier, la façon de gérer la mémoire y est très différente, surtout avec l'approche que je préconise. Contrairement à la façon d'utiliser des pointeurs et des allocations dynamiques, qui formellement ne différencie que par la non présence d'un ramasse-miettes.

    Mais le C++ tire sa flexibilité des pointers et de la gestion manuelle de la memoire, c'est ce qui permet de faire au mieux les structures de données.
    Les structures de données ne sont écrites qu'une seule fois, ce n'est pas en ça que consiste le travail du développeur.
    Les intérêts du C++ sont sa généralité (conçu pour pouvoir programmer tout et n'importe quoi), sa rapidité, sa sécurité, sa modularité, sa généricité et ses capacités d'abstraction.

  4. #24
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    on peut discuter des heures comme ca, tu ne dois pas lire mes reponses.

    ... au final je pense que de conseiller de stoker les objets plutot que des pointers n'est pas un bon conseil.

    a+

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/10/2007, 01h12
  2. Ajout/Suppression dynamique d'éléments
    Par Norin dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/03/2007, 20h15
  3. Choix d'un conteneur
    Par olive_le_malin dans le forum C++
    Réponses: 9
    Dernier message: 05/12/2006, 11h13
  4. Parcours dynamique des éléments d'un form
    Par leminipouce dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 02/10/2006, 20h09
  5. Choix du bon conteneur
    Par new.proger dans le forum C++
    Réponses: 5
    Dernier message: 09/08/2006, 01h03

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