Вход

Просмотр полной версии : Удаление элемента в массиве



Александр2023
23.06.2023, 23:52
Здравствуйте, поскажите как удалить элемент в массиве? Codesys 3.5

Cs-Cs
24.06.2023, 09:35
Если в общем виде - то так же, как и в любом другом языке программирования: в цикле скопировать СЛЕДУЮЩИЕ элементы со сдвигом на место удалённого.
В одном из своих проектов (у меня там было накопление данных и вычисление среднего) я сделал удобнее для себя: у меня был массив структур, в которых были и данные и BOOL-поле "Valid" (данные верные). И вместо удаления данных я выставлял Valid = FALSE, и не обрабатывал эти данные.

melky
24.06.2023, 11:34
из массива без телодвижений копирования удалять никак, вроде ни в одном языке.
а есть в ST аналоги List или Dictionary ?

Валенок
24.06.2023, 15:46
... есть в ST аналоги List или Dictionary ?
Сложно сделать ?


из массива без телодвижений копирования
Список перебрать придется. Чудес не бывает.
Если задача критичная ко времени - то только оптимизация и/или гибридизация массивов/списков под конкретную задачу.

melky
26.06.2023, 08:23
Валенок зная список, из него можно удалять по индексу, зачем перебирать?

Валенок
26.06.2023, 17:57
melky, чистый список не предполагает индексации, только цепочка указателей. Или гибрид?

melky
26.06.2023, 19:19
Валенок я про List в языках программирования, там можно удалить ячейку по индексу, в ST так понимаю аналога нет.

Валенок
26.06.2023, 23:57
Melky"там можно удалить ячейку по индексу,"
Там внизу сдвиг массива и/или перебор указателей. А всякие property именуемые "index" иногда несколько тяжелые функции.


в ST так понимаю аналога нет.
Нет. Но так же нет никаких проблем сделать список если какой-то алгоритм удобней именно со списком.