Podobnie jak w tytule. Wiem, że prawdopodobnie łączy 2 podlisty przed i po usuniętych elementach, ale jak zachowuje się ta metoda podczas usuwania elementów OSTATNIEGO? Innymi słowy: czy w jakiś sposób tworzy kopię wszystkich elementów znajdujących się przed indeksem usuwania? Jestem po prostu ciekawa, jak wykorzystać funkcję RemoveRange na gigantycznej liście (powiedzmy 5000 elementów), aby usunąć f.e. tylko ostatnie 2 z nich.Jak działa metoda RemoveRange() na liście <>?
Jeśli tworzy kopię, czy istnieje sposób na zmianę wewnętrznej zmiennej, która ustawia rozmiar listy (i traktuje resztę przydzielonych elementów jako śmieci)?
Udało mi się tylko znaleźć informację, że jest to algorytm złożoności O (n), ale nie jestem pewien, czy "n" w tym przypadku jest wielkością Listy, czy też liczbą elementów do usunięcia.
Będzie zadowolony z wszelkich wskazówek.
http://msdn.microsoft.com/en-gb/library/y33yd2b5.aspx "Ta metoda jest operacją O (n), gdzie n to liczba." "Elementy są usuwane, a wszystkie elementy występujące po nich na liście mają zmniejszone indeksy według liczby." http://geekswithblogs.net/BlackRabbitCoder/archive/2012/02/23/c.net-little-wondersndashthe-listlttgt-range-methods.aspx "należy pamiętać, że powoduje to konieczność przesunięcia reszty listy do wypełnić lukę, która może być nietrywialna.Jednak nie będzie to wymagać ponownego przydzielenia listy, ponieważ rozmiar potencjalnie się zmniejsza, a nie rośnie. " –
Przyjdź, że uważasz, że liczba to liczba do usunięcia. Usunięcie 2 z listy dziesięciu zajmie tyle samo czasu, co usuwanie 2 z miliona Jeśli klikniesz liczbę w dokumentacji, która łączy Licznik list – Paparazzi
@Blam To nie jest prawda, chyba że usuwasz z końca listy. Jeśli usuwasz z początku listy to jest różnica pomiędzy przesunięciem 8 przedmiotów w pamięci o dwa przedmioty, a przesunięciem 1 999 999 przedmiotów w pamięci o dwa przedmioty. Te dwa elementy nie będą równe: – Servy