|
Алгоритм удаления строк коллекции по условию | ☑ | ||
|---|---|---|---|---|
|
0
prog1Csww
29.11.19
✎
06:58
|
Алгоритм удаления строк коллекции по условию
Знаю что более быстрый это начинать с конца К = Массив.Количество() Для Сч = К По 1 Цикл Если УдовлетворяетУсловию(Элемент[Сч].Значение) = Истина Тогда Массив.Удалить(Сч); КонецЕсли; КонецЦикла; (это не 1С язык) Также там какой то нюанс, что если элементы в коллекции сами сдвигается при удалении, то можно и с начала начинать. Как это называется? Кто догадались что с конца быстрее? Интуитивно? Или как-то связано с вычислением времени алгоритма? Из доступных лекций про это знаю только https://www.lektorium.tv/course/22823 https://www.lektorium.tv/course/22843 Смотреть некогда. Может кто смотрел или изучал, есть это в лекциях? Хотя бы да\нет?... |
|||
|
1
Индиго
29.11.19
✎
07:04
|
всегда пользуюсь такой схемой:
//-- мУд=Новый Массив; Для каждого Эл из Коллекция Цикл Если Удовлетворяет(Эл) Тогда мУд.Добавить(Эл); КонецЕсли; Конеццикла; Для Каждого Эл Из мУд Цикл Коллекция.Удалить(Эл); Конеццикла; |
|||
|
2
Admin_Net_1C
29.11.19
✎
08:54
|
(0) обход коллекции от последнего элемента к первому с удалением не нужных
|
|||
|
3
Сияющий в темноте
29.11.19
✎
08:57
|
если мы не используем оператор для каждого,то можно и сначала обходить,просто,при удалении не забывать уменьшить количество и индекс на единицу.
|
|||
|
4
ice777
29.11.19
✎
08:59
|
(3) "итератор", хотел сказать?
|
|||
|
5
Simod
29.11.19
✎
09:06
|
Можно и прямым перебором, и обратным. Использовать "Для Каждого.." при непосредственном удалении не получиться, т.к. сбивается выборка. Но можно использовать способ переноса отобранных значений в другую коллекцию - http://catalog.mista.ru/public/788007/#69.%20Быстрое%20удаление%20строк%20в%20таблице%20значений
|
|||
|
6
Конструктор1С
29.11.19
✎
09:10
|
Господа, вы занимаетесь оптимизацией там, где она не требуется
|
|||
|
7
СвинТуз
29.11.19
✎
09:28
|
СтруктураОтбора = Новый Структура;
Строки = .НайтиСтроки(СтруктураОтбора); |
|||
|
8
СвинТуз
29.11.19
✎
09:29
|
Оно того не стоит
|
| Форум | Правила | Описание | Секции | Поиск |