Russian Qt Forum

Qt => Общие вопросы => Тема начата: bjilly от Март 12, 2010, 00:19



Название: QList<T *> не работает с STL алгоритмами
Отправлено: bjilly от Март 12, 2010, 00:19
Есть код. Хочу найти элемент, подходящий по критериям, в списке используя средства STL.
Код
C
struct Str
{
   QString name;
   int value;
};
 
 
bool isequal(const Str* str, const int val)
{ return str->value == val; }
 
...
 
   QList<Str *> lst;
 
   QList<Str *>::iterator iter =
       find(lst.begin(), lst.end(), bind2nd(ptr_fun(isequal), 5));
 

При компиляции получаю ошибку. Что в моем коде не так?
Код:
/usr/include/c++/4.1.3/bits/stl_algo.h: In function ‘_RandomAccessIterator std::__find(_RandomAccessIterator, _RandomAccessIterator, const _Tp&, std::random_access_iterator_tag) [with _RandomAccessIterator = QList<Str*>::iterator, _Tp = std::binder2nd<std::pointer_to_binary_function<const Str*, int, bool> >]’:
/usr/include/c++/4.1.3/bits/stl_algo.h:316:   instantiated from ‘_InputIterator std::find(_InputIterator, _InputIterator, const _Tp&) [with _InputIterator = QList<Str*>::iterator, _Tp = std::binder2nd<std::pointer_to_binary_function<const Str*, int, bool> >]’
main.cxx:25:   instantiated from here
/usr/include/c++/4.1.3/bits/stl_algo.h:208: error: no match for ‘operator==’ in ‘__first.QList<T>::iterator::operator* [with T = Str*]() == __val’


Название: Re: QList<T *> не работает с STL алгоритмами
Отправлено: niXman от Март 12, 2010, 02:49
Цитировать
no match for ‘operator==’ in ‘__first.QList<T>::iterator::operator*


Название: Re: QList<T *> не работает с STL алгоритмами
Отправлено: billygates от Март 12, 2010, 07:19
Цитировать
no match for ‘operator==’ in ‘__first.QList<T>::iterator::operator*
Читать я умею. Собственно возник вопрос, зачем ему понадобился данный оператор?


Название: Re: QList<T *> не работает с STL алгоритмами
Отправлено: niXman от Март 12, 2010, 07:27
Цитировать
Читать я умею.
сомневаюсь.

Цитировать
зачем ему понадобился данный оператор?
а разыменовывать итератор каким образом он должен?

а говоришь, читать умеешь.


Название: Re: QList<T *> не работает с STL алгоритмами
Отправлено: billygates от Март 12, 2010, 10:37
а разыменовывать итератор каким образом он должен?

а говоришь, читать умеешь.

Я облажался, прошу прощения. Конечно же, find_if, а не find. Вопрос закрыт.