Russian Qt Forum
Ноябрь 26, 2024, 12:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Почему QList удаляет только половину списка?  (Прочитано 1747 раз)
AlekseyDL
Гость
« : Август 14, 2013, 22:52 »

Добрый вечер.
Столкнулся со странной особенностью QList: при удалении элементов списка (с помощью void removeAt ( int i )), количетво элементов уменьшается только до 1/2 от начального размера списка.
Приведу пример:
Код:
           QList <int> p_list;
for (int i = 0; i < 12; i ++)
{
p_list.insert(i, i * i);
}

int size;
p_list.removeAt(0);
size = p_list.size();
p_list.removeAt(1);
size = p_list.size();
p_list.removeAt(2);
size = p_list.size();
p_list.removeAt(3);
size = p_list.size();
p_list.removeAt(4);
size = p_list.size();
p_list.removeAt(5);
size = p_list.size();
p_list.removeAt(6);
size = p_list.size();
p_list.removeAt(7);
size = p_list.size();
-здесь, после строки "p_list.removeAt(5);" size остается равным 6.
Поясните, пожалуйста, как обойти эту особенность: после каждого удаления элемента вплоть до последнего, размер должен уменьшаться на 1.

***

Отправил тему и нашел ответ ).
У нас же нет индекса больше 5 после 6 удалений.
« Последнее редактирование: Август 14, 2013, 22:55 от AlekseyDL » Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #1 : Август 15, 2013, 08:31 »

Потому что, после выполнения

Код:
p_list.removeAt(0);

индексы смещаются, то есть что бы удалить 6ть элементов выполни 6ть раз  p_list.removeAt(0).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.145 секунд. Запросов: 22.