如標題所示。我知道它可能會在刪除項目之前和之後合併2個子列表,但在刪除LAST元素時該方法的行爲如何?換句話說:它是否以某種方式複製了刪除索引之前的所有元素?我只是好奇在一個巨大的列表(假設有5000個元素)上使用RemoveRange來消除f.e.只有最後2個。RemoveRange()方法如何在List <>中工作?
如果它做了一個副本,那麼有沒有辦法改變一些設置List大小的內部變量(並將剩餘的分配元素視爲垃圾)?
我只設法找到一個信息,它是一個O(n)複雜度算法,但我不確定這個情況下的「n」是列表大小還是要刪除的項目數。
對任何提示都會很高興。
http://msdn.microsoft.com/en-gb/library/y33yd2b5.aspx「此方法是O(n)操作,其中n是Count。」 「這些項目被刪除,列表中的所有元素的索引都減少了。」 http://geekswithblogs.net/BlackRabbitCoder/archive/2012/02/23/c.net-little-wondersndashthe-listlttgt-range-methods.aspx「請注意,這會導致列表的其餘部分需要向下移動到填補空白,這可以是不平凡的。但是,它不需要重新分配列表,因爲它的大小可能會縮小,而不會增加。「 –
來吧,你認爲計數是要刪除的數字。從十列表中刪除2將花費相同的時間從百萬中刪除2如果你點擊文檔中的計數鏈接列表計數 – Paparazzi
@Blam這是不正確的,除非你從列表的末尾移除如果你從列表的開始處移除那麼這兩個項目之間的差異就是將內存中的8個項目向上移動兩個項目,而將內存中的1,999,998個項目向上移動兩個項目,這兩個項目不會相同 – Servy