Название: работа с QList<int> Отправлено: izoomer от Январь 17, 2007, 18:38 посоветуйте как лучше реализовать:
есть QList<int> с неизвестным количеством элементов, требуется просмотреть весь лист и все значения уменьшить на 1, а если значение после этого стало 0 то удалить его из списка совсем. Название: работа с QList<int> Отправлено: Steven_Orko от Январь 17, 2007, 19:53 Я бы сделал так:
Код:
Название: работа с QList<int> Отправлено: nova от Январь 17, 2007, 19:55 Пример из доки по Qt:
Код:
Название: работа с QList<int> Отправлено: Steven_Orko от Январь 17, 2007, 20:03 Цитата: "nova" Пример из доки по Qt: Тогда уж так: Код:
Только, судя по вопросу, удалить надо сразу же, как стало 0, а не ждать следующего уменьшения все значений... Название: работа с QList<int> Отправлено: izoomer от Январь 17, 2007, 20:18 Цитировать Код:
Только, судя по вопросу, удалить надо сразу же, как стало 0, а не ждать следующего уменьшения все значений... и как в этом случае сделать что бы сразу удалялось как только стало 0 ? добавлено спустя 7 минут: Цитата: "Steven_Orko" Я бы сделал так: Код:
в этом случае работает корректно если в списке одно значение , если в списке два значения то уже не корректно уменьшает и удаляет добавлено спустя 2 минуты: если точно то если в списке два значения - например -4,7 то при уменьшении становится не 3,6 а 2,5 Название: работа с QList<int> Отправлено: nova от Январь 17, 2007, 20:30 Цитата: "izoomer" Цитировать Код:
Только, судя по вопросу, удалить надо сразу же, как стало 0, а не ждать следующего уменьшения все значений... и как в этом случае сделать что бы сразу удалялось как только стало 0 ? и в сет валуе убрать два минуса А я вобщето пример из доки просто скопировал не переделывая :) добавлено спустя: Так стоп ! Тебе надо уменьшать значение в списке? или только проверка и удаление если стало 0? если второе то воттак: Код:
Название: работа с QList<int> Отправлено: izoomer от Январь 17, 2007, 20:32 Цитата: "nova" Цитата: "izoomer" Цитировать Код:
Только, судя по вопросу, удалить надо сразу же, как стало 0, а не ждать следующего уменьшения все значений... и как в этом случае сделать что бы сразу удалялось как только стало 0 ? и в сет валуе убрать два минуса А я вобщето пример из доки просто скопировал не переделывая :) добавлено спустя: Так стоп ! Тебе надо уменьшать значение в списке? или только проверка и удаление если стало 0? если второе то воттак: Код:
пройтись по всему списку и уменьшить все значения на 1 - и сразу же удалить элемент из списка если он стал ==0 в исправленом примере та же ситуация - если одно значение то все ок, если два и более то уменьшает на 2 Название: работа с QList<int> Отправлено: nova от Январь 17, 2007, 20:42 Вот:
Код:
Название: работа с QList<int> Отправлено: izoomer от Январь 17, 2007, 20:50 нет, не корректно уменьшает если в списке больше 1 значения
Название: работа с QList<int> Отправлено: nova от Январь 17, 2007, 21:04 ищи где ты енто место ДВА раза вызываеш :)
не поленился проверить ;) Код:
результат выполнения: Код:
Название: работа с QList<int> Отправлено: izoomer от Январь 17, 2007, 21:23 прошу прощения, нашел где два раза вызываю ... вечер - устал.
Спасибо всем за помощь - оба варианта работают замечательно. Название: работа с QList<int> Отправлено: Dendy от Январь 17, 2007, 22:28 Чето у вас слишком много букв в коде. А как же Code Less. Create More?
Код: for ( QMutableListIterator<int> it( list ); it.hasNext(); ) Название: работа с QList<int> Отправлено: nova от Январь 17, 2007, 22:31 Во усталость прошла, соображать стал :)
А я вот сижу туплю :( Работы вагон а дубат лень :roll: Название: работа с QList<int> Отправлено: izoomer от Январь 18, 2007, 00:16 Цитата: "Dendy" Чето у вас слишком много букв в коде. А как же Code Less. Create More? Код: for ( QMutableListIterator<int> it( list ); it.hasNext(); ) красиво ... есть чему поучиться ... спасибо |