insertion dans une liste triee - C++ - Programmation
Marsh Posté le 03-03-2010 à 19:19:27
soit tu bidouille avec priority_queue, soit tu regarde du coté de boost::multi_index
Marsh Posté le 04-03-2010 à 10:24:45
J'ai regarde boost::multi_index mais ca m'a donne l'impression d'utiliser un marteau-pilon pour ecraser une mouche
Toutefois, en suivant les liens, je suis tombe sur std::multiset, qui a l'air de faire ce dont j'ai besoin
Marsh Posté le 04-03-2010 à 10:39:49
ouais multi-index c'ets plsu que géénrique mais trés puissant. multi_set ma l'air pas mal.
Marsh Posté le 04-03-2010 à 10:53:56
Un truc du genre :
Code :
|
Ça irait pas ? (ça insère au bon endroit si la liste est déjà triée, en O(n) )
Marsh Posté le 04-03-2010 à 11:35:13
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
Marsh Posté le 03-03-2010 à 17:38:08
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?