Название: QList развернуть список Отправлено: ltise от Ноябрь 02, 2010, 18:21 Подскажите плиз как развернуть порядок следования элементов в списке ?
т.е. было 1, 2, 3, 4, 5 надо 5, 4, 3, 2, 1 как нить без использования цикла. Спасибо Название: Re: QList развернуть список Отправлено: Пантер от Ноябрь 02, 2010, 18:28 void QList::swap ( int i, int j )
Без цикла не получится. Название: Re: QList развернуть список Отправлено: merke от Ноябрь 02, 2010, 18:36 можешь использовать буферный лист в него переписать всё с самого конца до начала, а потом уже очистив первый записать в него буферный с начало до конца! и опять же без циклов не обойтись. Если конечно у тебя и есть цифры 1 2 3 . . . 8 9 и т.д. в порядке возрастания, то можешь применить алгоритмы сортироки из QAlgorithm.
Название: Re: QList развернуть список Отправлено: ltise от Ноябрь 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); } } Может что эффективнее придумается ? гонять из списка в список - тяжеловато будет. Название: Re: QList развернуть список Отправлено: ltise от Ноябрь 02, 2010, 19:04 можешь использовать буферный лист в него переписать всё с самого конца до начала, а потом уже очистив первый записать в него буферный с начало до конца! и опять же без циклов не обойтись. Если конечно у тебя и есть цифры 1 2 3 . . . 8 9 и т.д. в порядке возрастания, то можешь применить алгоритмы сортироки из QAlgorithm. не, у меня указатели, причем много :)Название: Re: QList развернуть список Отправлено: Rcus от Ноябрь 02, 2010, 19:27 Не знаю насчет эффективности, но короче будет std::reverse(list.begin(), list.end()); :)
|