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

  FORUM HardWare.fr
  Programmation
  C++

  insertion dans une liste triee

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

insertion dans une liste triee

n°1970925
liouan
Posté le 03-03-2010 à 17:38:08  profilanswer
 

Bonjour,
 
J'ai pas mal d'experience en Java et je me suis mis au C++ recemment. J'essaie donc de retranscrire des concepts connus en Java dans des programmes en C++.
 
Je bloque sur les differents types de Collection proposees en C++. J'ai vu qu'il y avait des vector, des list et autres, j'ai aussi vu comment les trier en surchargeant operator< ou en passant un predicat. (a ce sujet, cette page http://bakura.developpez.com/tutoriel/cpp/tri/ est tres bien redigee)
 
Mais je ne trouve pas comment faire une insertion dans une liste triee.
Concretement, j'ai une liste (std::list<shared_ptr<MyObject>> ).  
Cette liste, je veux pouvoir la recuperer triee, mais je ne veux pas la trier a chaque fois que je la recupere (parce que je la recupere souvent). Je voudrais aussi eviter de la trier a chaque fois que j'ajoute un element (lourdeur pachydermique). Je cherche donc une implementation de Collection triee (a la SortedList en java). L'idee, c'est que, a tout instant, la liste est supposee triee et lorsqu'un element est ajoute a la liste, l'element s'insere a sa place de maniere a conserver le tri (en fonction du critere de comparaison ou d'un predicat).
 
Connaissez-vous un moyen de faire ca? une implementation standard que je ne connaitrais pas?

mood
Publicité
Posté le 03-03-2010 à 17:38:08  profilanswer
 

n°1970959
Joel F
Real men use unique_ptr
Posté le 03-03-2010 à 19:19:27  profilanswer
 

soit tu bidouille avec priority_queue, soit tu regarde du coté de boost::multi_index

n°1971067
liouan
Posté le 04-03-2010 à 10:24:45  profilanswer
 

J'ai regarde boost::multi_index mais ca m'a donne l'impression d'utiliser un marteau-pilon pour ecraser une mouche :D
Toutefois, en suivant les liens, je suis tombe sur std::multiset, qui a l'air de faire ce dont j'ai besoin :)

n°1971077
Joel F
Real men use unique_ptr
Posté le 04-03-2010 à 10:39:49  profilanswer
 

ouais multi-index c'ets plsu que géénrique mais trés puissant. multi_set ma l'air pas mal.

n°1971083
0x90
Posté le 04-03-2010 à 10:53:56  profilanswer
 

Un truc du genre :

Code :
  1. taliste.insert(std::lower_bound(taliste.begin(), taliste.end(), nouveautruc), nouveautruc);


Ça irait pas ? (ça insère au bon endroit si la liste est déjà triée, en O(n) )


Message édité par 0x90 le 04-03-2010 à 10:54:08

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1971106
liouan
Posté le 04-03-2010 à 11:35:13  profilanswer
 

Je viens de chercher ce qu'est lower_bound et effectivement, ca a l'air pas mal, ca me permettrait de rendre mes interfaces moins barbares
 (pour l'instant, je me traine des std::multiset<shared_ptr<MyClass>,MyClass::MySorter> )
 
 Je vais faire un essai :D

n°1971219
liouan
Posté le 04-03-2010 à 16:07:21  profilanswer
 

ca marche nikel, merci :)


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

  insertion dans une liste triee

 

Sujets relatifs
liste déroulantes dynamiques liées et insertion dans BDD (PHP/SQL)pb insertion champ vide dans BDD via formulaire (PHP/SQL) [Résolu]
[Résolu] Liste déroulante php/sql n'affichant pas toutes les données.[Résolu] Liste déroulante selon checkbox cochée ou pas.
insertion gadgets google dans application 2.0liste chainée et tableau dynamique
[resolu] recherche et insertion structure liste chaine: la V2Mettre à jour une liste en fonction d'une autre
Plus de sujets relatifs à : insertion dans une liste triee


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