Здравствуйте, гость ( Вход | Регистрация )
novichkov | Дата 22.5.2011, 10:17 |
А я всегда думал, что в таких случаях нужно использовать mutable iterators. | |
RazrFalcon | Дата 13.5.2011, 21:35 |
О. Спасибо. Не подумал. У меня список большой, и вылетов еще не было. Но идею понял. | |
Litkevich Yuriy | Дата 13.5.2011, 21:02 |
Выбранный способ неправильный. Ты сделал такую вещь: это даёт тебе гарантию, что ты не выйдишь за пределы индекса списка.Но. Когда цикл находится на индексе = 4 и происходит совпадение условия - удаляешь 1 элемент. Теперь кол-во элементов стало на 1-цу меньше, соответственно индексы сдвинулись, тот элемент что был 5-ым, стал четвёртым, однако цикл инкрементирует индекс и переходит к номеру 5, который раньше был номер 6. Т.е. всякий раз, когда условие удаления выполнится, ты пропускаешь следующий элемент в списке. В подобных ситуациях, когда в контейнере нужно удалять элемент в цикле, лучше вместо удаления элементов создавать новый список и в цикле копировать в него данные, которые должны остаться. И этот новый список будет результатом работы (функции). |
|
RazrFalcon | Дата 13.5.2011, 15:47 |
Куда копать? Имеется 2-а QStringList. Из первого нужно вырезать все, что есть во втором. При том, что второй содержит только часть строки, которую нужно найти и вырезать в первом. Если бы строки были одинаковые/полные. То ничего сложного:
Пока что реализовал так:
Может есть более простой/правильный способ? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 23.4.2024, 9:52 |