Форум программистов, компьютерный форум, киберфорум
Наши страницы

Поиск в STL - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Символы на С http://www.cyberforum.ru/cpp-beginners/thread282044.html
Дана строка S, изображающая вещественное число в формате с плавающей точкой, и целое число N (>0). Вывести набор символов, изображающих первые N цифр дробной части этого вещественного числа (без...
C++ Игра Теннис Теннис Написать программу, которая бы имитировала игру в теннис. Поле для игры представляет собой прямоугольник, по которому движется теннисный мячик. С правой стороны находится «ракетка» игрока,... http://www.cyberforum.ru/cpp-beginners/thread282038.html
template .h .cpp C++
Здраствуйте! Возник вопрос по поводу шаблонов. В книге лафоре написана очередь Queue с использованием шаблонов, и там всё раздельно объявления в .h, а определиние в .cpp соотвественно. Захотел...
Палиндромы в текстовом файле на С++ C++
Задача Подсчитать количество слов-палиндромов в текстовом файле (.txt). Cлова разделены пробелом или каждое записано с новой строки. Пример asa mom dad joy 3 палиндрома или Пример
C++ непонятно ...подпрограмма возвращает true http://www.cyberforum.ru/cpp-beginners/thread281975.html
Подпрограмма возвращает true, если все элементы массива отличны от нуля, и подсчитывает, сколько в нём отрицательных элементов. Применив её к массиву X и Y, вывести массив,где больше отрицательных...
C++ Строка в double Ecть массив char={2,3,6,.,8,9} Как написать алгоритм, чтоб получить число 236.89? Я все перепробовал, ничего не выходит. подробнее

Показать сообщение отдельно
Ma3a
Эксперт С++
618 / 462 / 31
Регистрация: 28.01.2011
Сообщений: 605
23.04.2011, 19:20
Стандартный алгоритм std::find работает посредством оператора ==, для того, чтобы пользоваться функторами, придется написать свой find, например, так:

C++
1
2
3
4
5
6
7
8
template <typename _Iter, typename _Ty, typename _Comp>
_Iter my_find(_Iter _first, _Iter _last, _Ty _val, _Comp  _fn)
    {
    for(; _first != _last; ++_first)
        if(_fn(*_first,_val))
            break;
    return _first;
    }
Видимо, предполагается сравнивать с std::string, так что вызов my_find можно сделать так:
C++
1
it=my_find(vr.begin(),vr.end(), "Hey!", StrName);
или так
C++
1
it=my_find(vr.begin(),vr.end(), "Hey!", CompareName());
Добавлено через 5 минут
Всё это применительно к тому, если нужно пользоваться бинарными предикатами, если нужно просто найти элементы, удовлетворяющие какому-то условию, то подойдет std::find_if.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru