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 :

fonction qui renvoie un tableau


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
    Points : 4 625
    Points
    4 625
    Par défaut
    Oui mais tu fais une copie complete de ton tableau au moment du retour si je ne me trompe pas.
    Cela dépend des cas.
    Dans le cas où la valeur de retour est utilisée pour initialiser un nouveau tableau, non.
    Dans le cas où la valeur de retour est utilisée pour assigner une nouvelle valeur à un tableau existant, bien évidemment, oui, les données ont besoin d'être copiées.

    Enfin, aucune copie effectuée n'est inutile.

    De plus, si tu veux faire un tableau d'objets, avec ta methode tu est obligé de te taper les constructeurs par copie.
    Tout conteneur copiable se doit de contenir des éléments eux-mêmes copiables, c'est évident.

  2. #22
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    perso, je ne perds pas mon temps a ecrire des constructeurs par copie pour mes objets ou alors dans de rares execptions pour des objets très basiques.

  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
    Points : 4 625
    Points
    4 625
    Par défaut
    Dans ce cas-là il faut que tu rendes tes objets non copiables avec un constructeur de copie privé, sinon un problème est vite arrivé.

    De toute façon c'est très simple de faire des objets copiables, il suffit de commencer par utiliser std::vector et pas des pointeurs par exemple.

  4. #24
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    Tout ce que tu me dis la semble s'appliquer à des applications non orientées temps réel.

    Tu peux pas toujours te permettre de faire des copies de tableaux qui font plus de 100Mo en RAM par exemple.

    Si on a la possibilité d'éviter les copies inutiles autant le faire.

  5. #25
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    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 282
    Points : 11 036
    Points
    11 036
    Par défaut
    TR ? -> queues de messages et futures sont pas mal pour les échanges inter-threads.

    Sinon, vector powa' ! Avec un bon compilo, RVO et RNVO règnent en maitre -- le vieux compilo de Sun m'a d'ailleurs surpris à plus d'une occasion à ce sujet. "Bientôt" on aura les rvalue références pour les cas non optimisables en R(N)VO.

    Mieux vaut un truc qui tourne juste en situation dégradée, plutôt qu'un truc qui se viande à la première poussière d'octet sous le tapis.

    Et puis, si tu sais que tu as vraiment 100megs, soit tu interdis la copie, soit tu enforces la sémantique de déplacement, mais en aucune cas tu ne peux faire confiance aux opérations de copie générées par défaut.

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

Discussions similaires

  1. appel d'une fonction qui renvoie un tableau
    Par yokou dans le forum VB.NET
    Réponses: 1
    Dernier message: 08/01/2008, 22h52
  2. fonction qui renvoie un tableau
    Par GLSpirit dans le forum C++
    Réponses: 9
    Dernier message: 12/05/2007, 15h05
  3. fonction qui renvoie un tableau
    Par toto2022 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/01/2007, 17h11
  4. Comment faire une fonction qui renvoi un tableau.
    Par poly128 dans le forum Delphi
    Réponses: 2
    Dernier message: 01/06/2006, 02h04
  5. Fonction qui renvoie un tableau?
    Par elm dans le forum C
    Réponses: 23
    Dernier message: 21/12/2005, 13h44

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