Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1223 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  std::list<> Construction automatique lors de l'insertion

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

std::list<> Construction automatique lors de l'insertion

n°2092758
Pascal le ​nain
Posté le 01-08-2011 à 21:24:31  profilanswer
 

Bonjour,
 
J'ai une liste std::list<Plop>.
 
Plop est une classe assez consequente et je souhaite eviter au maximum les copies.
 
J'aimerai ajouter une instance de Plop dans la liste.
 
Or si je fais  

Code :
  1. Plop instance;
  2. liste.push_back(instance);


Cela fera une copie de instance (ce que je souhaite eviter).
 
Plop possede un constructeur classique Plop() sans argument.
 
Je souhaite creer l'objet a l'interieur de la liste et l'initialiser par la meme occasion.
 
Une solution a laquelle j'ai pense est de faire une std::list<Plop*> a la place, puis

Code :
  1. liste.push_back(new Plop());


 
Mais ca m'embete de me trimballer une liste de vecteurs, c'est relou a manipuler et c'est pas beau visuellement.
 
Connaissez-vous une solution, ou est-ce que la liste de vecteurs est l'unique solution ?
 
Merci d'avance  ;)

mood
Publicité
Posté le 01-08-2011 à 21:24:31  profilanswer
 

n°2092761
Joel F
Real men use unique_ptr
Posté le 01-08-2011 à 21:53:44  profilanswer
 

- une std::list de std ou boost::shared_ptr
- un boost::intrusive_list
- un pattern flyweight
 
Apres, pose toi la question de pourquoi Plop est si lourd ... remember GodObject :o

n°2092768
Pascal le ​nain
Posté le 01-08-2011 à 22:34:13  profilanswer
 

Plop n'est pas un godobject, il a juste un buffer statique de 1024 bytes, et c'est moche de le copier ;)
Le boost::shared_ptr m'a l'air fort interessant, mais n'apporte au final qu'un free automatique. Et puis mea culpa, j'ai un peu la flemme de toucher a boost. C'est vraiment si bien que ca ? :p


Message édité par Pascal le nain le 01-08-2011 à 22:34:57
n°2092811
Joel F
Real men use unique_ptr
Posté le 02-08-2011 à 07:45:07  profilanswer
 

non, on le conseille juste pour ce toucher la nouille.
Boost etant l'antichambre du standard, vu que justement le std::shared_ptr est boost::shared_ptr standardisé ... evidemment que c'est naze :o
 
Apres, si on a la flemme, j'y peut rien. T'as ta solution, tu te debrouilles :o

n°2092873
Pascal le ​nain
Posté le 02-08-2011 à 13:20:50  profilanswer
 

Rhoo t'excite pas  :ange:  

Joel F a écrit :


Boost etant l'antichambre du standard, vu que justement le std::shared_ptr est boost::shared_ptr standardisé ... evidemment que c'est naze :o


Tu m'as presque convaincu  ;)
 
Merci !


Message édité par Pascal le nain le 02-08-2011 à 13:20:59
n°2092926
Joel F
Real men use unique_ptr
Posté le 02-08-2011 à 17:49:57  profilanswer
 

spa pour rien que je mets des :o

n°2093358
theshockwa​ve
I work at a firm named Koslow
Posté le 04-08-2011 à 17:59:12  profilanswer
 

premature optimisation is the root of all evil. Tu es sur que le remplissage de ta liste pose un réel problème dans ton application ?
 
en tout cas, des structures qui avoisinnent 1Ko c'est pas la mort non plus. Ca devrait pas être long.


---------------
last.fm
n°2093371
Joel F
Real men use unique_ptr
Posté le 04-08-2011 à 19:33:40  profilanswer
 

je soupconne des passages par valeurs inopines au lieu de passage apr reference ailleurs dans le code.

n°2093387
Pascal le ​nain
Posté le 04-08-2011 à 21:14:11  profilanswer
 

A moins qu'il soit possible de faire une liste de reference, j'ai pas trop le choix.
Et c'est pas de l'optimisation prematuree. C'est une liste de sessions sur un daemon pour simuler une liaison permanente alors que le client se connecte par le web (donc asynchrone).
Je veux garder les sessions en memoire pour eviter de charger/decharger les sessions entre la ram et le disque.


Message édité par Pascal le nain le 04-08-2011 à 21:15:07
n°2093428
Joel F
Real men use unique_ptr
Posté le 05-08-2011 à 09:21:24  profilanswer
 

sauf que 1k c'est ridiculement rien. T'a des benchs pour montrer que ca pose probleme ?

mood
Publicité
Posté le 05-08-2011 à 09:21:24  profilanswer
 

n°2094181
Pascal le ​nain
Posté le 09-08-2011 à 14:52:06  profilanswer
 

Pas de bench, mais j'aimerai éviter de faire des opérations inutiles.
Ce n'est pas de l'optimisation prématurée, puisque ce que je désire faire est la ligne droite vers l'objectif, mais malheureusement impossible par la syntaxe du C++ actuel.
Je vais devoir faire quelques zig zags :p

n°2094226
Joel F
Real men use unique_ptr
Posté le 09-08-2011 à 16:46:00  profilanswer
 

pas de benchs, pas d'optim. Point. Ecris d'abord un code simple et lisible et maintenable, checks tes specs et avise apres.

n°2094245
theshockwa​ve
I work at a firm named Koslow
Posté le 09-08-2011 à 17:38:17  profilanswer
 

Pascal le nain a écrit :

Pas de bench, mais j'aimerai éviter de faire des opérations inutiles.
Ce n'est pas de l'optimisation prématurée, puisque ce que je désire faire est la ligne droite vers l'objectif, mais malheureusement impossible par la syntaxe du C++ actuel.
Je vais devoir faire quelques zig zags :p


 
mais faut arrêter de cracher sur le langage quand, d'une part, tu n'as même pas mesure s'il y avait problème et d'autre part, tu n'es pas en mesure d'implémenter les alternatives que tu proposes toi-même (la liste de références dont tu parles, c'est pas compliqué de la faire en liste de pointeurs, et tu peux même te faire un conteneur perso qui masque que ce sont des pointeurs si ca te chante) ...
Le C++ est justement tout à fait adapté pour traiter les problématiques de performances sur ce genre de sujet (accès aux données).


---------------
last.fm

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  std::list<> Construction automatique lors de l'insertion

 

Sujets relatifs
pb insertion dans une tableEnvoi mail automatique via Excel
Script pour téléchargement automatiqueConstruction d'une communaute de developpeurs de jeux video
affichage List javainsertion d'une image a l'aide du OrdImage en java
Positionnement automatique d'un blocredirection automatique si host pas joignable
ouverture automatique d'une page web sur cd 
Plus de sujets relatifs à : std::list<> Construction automatique lors de l'insertion


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR