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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QList развернуть список  (Прочитано 6072 раз)
ltise
Гость
« : Ноябрь 02, 2010, 18:21 »

Подскажите плиз как развернуть порядок следования элементов в списке ?

т.е. было 1, 2, 3, 4, 5 надо 5, 4, 3, 2, 1

как нить без использования цикла.

Спасибо
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Ноябрь 02, 2010, 18:28 »

void QList::swap ( int i, int j )
Без цикла не получится.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
merke
Гость
« Ответ #2 : Ноябрь 02, 2010, 18:36 »

можешь использовать буферный лист в него переписать всё с самого конца до начала, а потом уже очистив первый записать в него буферный с начало до конца! и опять же без циклов не обойтись. Если конечно у тебя и есть цифры 1 2 3 . . . 8 9 и т.д. в порядке возрастания, то можешь применить алгоритмы сортироки из QAlgorithm.
Записан
ltise
Гость
« Ответ #3 : Ноябрь 02, 2010, 18:56 »

Сделал так:

void MyList::invert()
{
   int n = size();
   int h = n/2;
   n--;
   for(int i=0; i < h; i++){
      swap(i, n-i);
   }
}

Может что эффективнее придумается ?

гонять из списка в список - тяжеловато будет.
Записан
ltise
Гость
« Ответ #4 : Ноябрь 02, 2010, 19:04 »

можешь использовать буферный лист в него переписать всё с самого конца до начала, а потом уже очистив первый записать в него буферный с начало до конца! и опять же без циклов не обойтись. Если конечно у тебя и есть цифры 1 2 3 . . . 8 9 и т.д. в порядке возрастания, то можешь применить алгоритмы сортироки из QAlgorithm.
не, у меня указатели, причем много Улыбающийся
Записан
Rcus
Гость
« Ответ #5 : Ноябрь 02, 2010, 19:27 »

Не знаю насчет эффективности, но короче будет std::reverse(list.begin(), list.end()); Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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