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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QList<T *> не работает с STL алгоритмами  (Прочитано 3591 раз)
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’
Записан
niXman
Гость
« Ответ #1 : Март 12, 2010, 02:49 »

Цитировать
no match for ‘operator==’ in ‘__first.QList<T>::iterator::operator*
Записан
billygates
Гость
« Ответ #2 : Март 12, 2010, 07:19 »

Цитировать
no match for ‘operator==’ in ‘__first.QList<T>::iterator::operator*
Читать я умею. Собственно возник вопрос, зачем ему понадобился данный оператор?
Записан
niXman
Гость
« Ответ #3 : Март 12, 2010, 07:27 »

Цитировать
Читать я умею.
сомневаюсь.

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

а говоришь, читать умеешь.
Записан
billygates
Гость
« Ответ #4 : Март 12, 2010, 10:37 »

а разыменовывать итератор каким образом он должен?

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

Я облажался, прошу прощения. Конечно же, find_if, а не find. Вопрос закрыт.
« Последнее редактирование: Март 12, 2010, 11:15 от billygates » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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