2008-10-19 18 views
7

ben bir kısmını sıralamak istediğiniz bir bağlantılı liste, örneğin var. Std :: list :: sort bir uzmanlık var, ancak bu sadece tüm listeyi sıralayabilir. Liste üyelerine kendim bir şeyler yazacak kadar erişimim olduğunu düşünmüyorum.Kısmi sıralama :: liste

Bunu, vektörü değiştirmeden yapmanın bir yolu var mı?

+0

ve vektör yerine listeyi kullanmanın temel nedeni nedir? Aslında std :: vektörün avg üzerinde hareket etmesi gerekiyor. Yarım elemanları (örneğin silerken), önbellek sayesinde süper hızlıdır. std :: vektör sık ​​sık silme ve rand ekleyerek bile std :: list atıyor. pos. Listeyi kullanarak çok fazla sayıda kar elde etmeniz gerekiyor. – relaxxx

+0

Dürüst olmak gerekirse hatırlayamıyorum çünkü üç buçuk yıldan beri sorduğumdan beri eminim ki bir şekilde geri çekildi ve uzun zamandır bu işi bıraktım. Sorunun amacı, verimlilikle ilgili değildi (her ne kadar bunu uçta çoğaltmak istemeyeceğime dair yeterli veri olduğu halde, ancak daha meraklı olmakla birlikte); Bu kısmi şeyi yapamayacağımı ve bunu başarmanın bir yolu olması gerektiğini görünce garip görünüyordu. – Peter

+0

oh: D kötüyüm ... Bu soruya “aktif sorular sayfası” ile değil, arama yoluyla rastladım ve bunun gerçekten aktif bir soru olduğunu düşündüm. – relaxxx

cevap

12

Listenin bölümünün ayrılmasını istediğiniz bağımsız bölüm listesinden çıkardıktan sonra, sonra özel liste listesini kullanın, sonra özgün listeye geri alın?

+2

Bu iyi bir fikir. Splice() yönteminin gücünü unutmak kolaydır. – bk1e

+0

+1 Bunu yapmanın en kolay yolu budur. – Nawaz