![]() |
Как удалить элемент из вектора в цикле?
Всем привет. В общем-то вопрос наверное простой. Но для меня, как новичка, этот момент немного напряг. Можно ли удалить элемент из вектора во время цикла по этому вектору?
Код AS1/AS2:
Что делать если не все элементы нужно удалить? И если не знаешь какие надо удалять пока цикл по ним не сделаешь. |
Код AS3:
|
я же написал:
Что делать если не все элементы нужно удалить? И если не знаешь какие надо удалять пока цикл по ним не сделаешь. Добавлено через 1 минуту Дело в том что при splice индексы смещаются и следующий ход цикла перескакивает через элемент. delete тоже не подходит, так как пустой элемент все равно остается. |
Код AS3:
|
Так не работает. Говорю еще раз: при splice индексы смещаются и следующий ход цикла перескакивает через элемент.
Если не понятно, получается такая ситуация: 1. В векторе 2 элемента. [0] = a, [1] = b. 2. for берет элемент [0] = a 3. splice удаляет [0] = a. Теперь [0] = b. 4. for ищет элемент [1], но такого уже нет. В результате [1] = b вообще не был обработан. |
Для этого
Код AS3:
|
Извиняюсь, тупанул. Попробую так. Хотя выглядит как-то немного костылёво. Спасибо.
|
Вызывать каждый раз splice может быть накладно.
Вот скоростной вариант: Код AS3:
|
Интересный вариант. Спасибо. возьму на заметку для тяжелых мест. но пока у меня предполагается 3-4 элемента в векторе.
Добавлено через 4 минуты Хочу еще добавить аргумент против вот этой конструкции: Код AS1/AS2:
|
Цитата:
|
| Часовой пояс GMT +4, время: 20:43. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.