Russian Qt Forum

Qt => Общие вопросы => Тема начата: bitwise от Март 11, 2010, 14:48



Название: поиск максимума
Отправлено: bitwise от Март 11, 2010, 14:48
Всем привет!

Народ, подскажите мне, новичку. Вот есть контейнер QList, заполненный числами. Есть ли в Qt метод, позволяющий определить наибольший элемент? Или нужно самому реализовать?

Спасибо!


Название: Re: поиск максимума
Отправлено: alexman от Март 11, 2010, 15:40
Можно сделать qSort и взять последний элемент ;)


Название: Re: поиск максимума
Отправлено: Пантер от Март 11, 2010, 15:48
alexman, ты извращенец. :)

Код
C++ (Qt)
QList<int> intList;
.......................
int max = intList.first();
 
for (int i = 1; i < intList.size(); i++)
   if (max < intList.at(i))
       max = intList.at(i);
 

Ы?


Название: Re: поиск максимума
Отправлено: alexman от Март 11, 2010, 15:51
alexman, ты извращенец. :)

Код
C++ (Qt)
QList<int> intList;
.......................
int max = intList.first();
 
for (int i = 1; i < intList.size(); i++)
   if (max < intList.at(i))
       max = intList.at(i);
 

Ы?

Почему это? Про скорость никто ничего не говорил!


Название: Re: поиск максимума
Отправлено: Пантер от Март 11, 2010, 16:09
Ну, да. Из пушки да по воробьям...


Название: Re: поиск максимума
Отправлено: Павел_F. от Март 11, 2010, 16:16
Тогда уж:
Код
C++ (Qt)
QList<int> intList;
.......................
int max = intList.first();
for( QList<int>::iterator  i  = intList.begin(); i != intList.end(); i++)
   if( max < *i) max = *i;
 

А еще у Qt есть foreach и код вообще свернется в
Код
C++ (Qt)
QList<int> intList;
............................
int max = intList.first();
foreach ( int temp, intList) if( max < temp) max = temp;
 


Название: Re: поиск максимума
Отправлено: Пантер от Март 11, 2010, 16:19
Тогда уж:
Код
C++ (Qt)
QList<int> intList;
.......................
int max = intList.first();
for( QList<int>::iterator  i  = intList.begin(), j = intList.end(); i != j; i++)
   if( max < *i) max = *i;
 
;)


Название: Re: поиск максимума
Отправлено: garryHotDog от Март 11, 2010, 18:54
никто и не заметил первую строку -
Цитировать
Народ, подскажите мне, новичку
))))) так что первый вариант для тебя самый опитимальный - разницы в скорости и не заметишь для такой операции!


Название: Re: поиск максимума
Отправлено: Alex Custov от Март 11, 2010, 19:06
Или нужно самому реализовать?

Нужно самому реализовать, как показали выше.


Название: Re: поиск максимума
Отправлено: Igors от Март 11, 2010, 19:11
Ага, а кто будет проверять не пуст ли QList?  :)
Чуть лучше qMax, хотя конечно много здесь не соптимизируешь


Название: Re: поиск максимума
Отправлено: alexman от Март 11, 2010, 19:28
Ага, а кто будет проверять не пуст ли QList?  :)
Чуть лучше qMax, хотя конечно много здесь не соптимизируешь
Это и ежу понятно, что нужно проверить не пуст ли список ;)


Название: Re: поиск максимума
Отправлено: bitwise от Март 11, 2010, 21:33
Ого! спасибо всем кто отписался  :)

Все понятно!

PS. Уже своял собственную функцию с for :)


Название: Re: поиск максимума
Отправлено: hackoff от Март 12, 2010, 06:42
можно еще в отдельный поток вынести поиск максимума :)


Название: Re: поиск максимума
Отправлено: xokc от Март 12, 2010, 18:54
И каждый новый максимум сигналом испускать  ;D
Впрочем, если массив ОЧЕНЬ большой, то можно и QtCocurrent заюзать.


Название: Re: поиск максимума
Отправлено: KuZ от Март 12, 2010, 21:08
max_element из STL.