Как установить количество C # без изменения емкости? - PullRequest
0 голосов
/ 28 мая 2019

Я точно знаю, сколько элементов я хочу сохранить в списке, они упорядочены, мне нужно, чтобы он заканчивался только по определенному индексу, который я знаю, но я не хочу изменять емкость или использовать TrimExcess для того, чтобыуменьшите его, иначе после добавления элемента он снова удвоит размер списка.

Как установить счетчик вместо использования Remove, RemoveAt или RemoveRange ?.

Мой приоритет - оптимизация скорости для этой операции.

Важно: я знаю, что могу использовать массив, но мне это запрещено.Кроме того, я добавляю элементы и удаляю их все время.Я просто хочу, чтобы способность оставалась примерно на том же уровне, которого я точно не знаю, но он стабилизируется.

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Если вы удалите элементы, Емкость не изменится.Поэтому, если вы не используете TrimExcess(), емкость будет только увеличиваться (до максимума, который вы когда-либо использовали для этого списка).Таким образом, нет никакого снижения производительности при повторном удалении элементов.Вы можете установить начальную емкость в конструкторе, что является хорошей идеей, если вы знаете, сколько элементов вы будете использовать (или имеете оценку для этого), потому что это устранит перегрузку удвоения при первоначальном построении списка.,

Примечание. Вставка / удаление в списке по-прежнему равно O (n), поскольку элементы в конечном итоге должны быть скомпонованы (если только вы не работаете только в конце списка).

0 голосов
/ 28 мая 2019

Используйте массив и (в C # 8.0 и далее) используйте Индексы и Диапазоны с нарезкой.https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8#indices-and-ranges

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...