2008-10-19 51 views
7

我有一個鏈接列表,我要排序的一部分,例如:部分種類的std ::的名單

std::sort(someIterator, otherIterator, predicate); 

的std ::排序需要隨機訪問迭代所以這種方法是行不通的。有一個專門的std :: list :: sort,但只能對整個列表進行排序。我認爲我沒有足夠的權限去列表成員自己寫一些東西。

有沒有辦法做到這一點,而不改變,例如,矢量?

+0

和你使用列表而不是向量的主要原因是什麼?儘管事實上std :: vector必須在avg上執行移動。半個元素(例如,刪除時),由於緩存的原因,它速度非常快。 std :: vector甚至在頻繁刪除並在rand上插入時也會跳過std :: list。 POS機。你必須有很多元素才能通過使用列表獲利。 – relaxxx 2012-04-27 18:24:35

+0

老實說,我不記得了,因爲在我問了三年半之後,我確定它已經被重構了,不管怎樣,我早就離開了那份工作。問題的關鍵不在於效率(儘管有足夠的數據我不想在飛行中全部複製),但更多的只是好奇心;似乎很奇怪,我似乎無法做到這一點,並且應該有某種方式來實現它。 – Peter 2012-04-27 19:58:03

回答

12

如何解開你想要排序的列表部分到獨立列表中, 然後使用專門的列表排序,然後將其掛回到原始列表中?