Алгоритм find_if()
template< class InputIterator, class Predicate > InputIterator find_if( InputIterator first, |
InputIterator last, Predicate pred );
К каждому элементу из диапазона [first,last)
последовательно применяется предикат pred. Если он возвращает true, поиск прекращается. find_if()
возвращает итератор типа InputIterator, указывающий на найденный элемент; в противном случае возвращается last.
#include <algorithm> #include <list> #include <set> #include <string> #include <iostream.h> // альтернатива оператору равенства // возвращает true, если строка содержится в объекте-члене FriendSet class OurFriends { // наши друзья public: bool operator()( const string& str ) { return ( friendset.count( str )); }
static void FriendSet( const string *fs, int count ) { copy( fs, fs+count, inserter( friendset, friendset.end() )); }
private: static set< string, less<string>, allocator > friendset; };
set< string, less<string>, allocator > OurFriends::friendset; int main() { string Pooh_friends[] = { "Пятачок", "Тигра", "Иа-Иа" }; string more_friends[] = { "Квазимодо", "Чип", "Пятачок" }; list<string,allocator> lf( more_friends, more_friends+3 ); // заполнить список друзей Пуха OurFriends::FriendSet( Pooh_friends, 3 );
list<string,allocator>::iterator our_mutual_friend; our_mutual_friend = find_if( lf.begin(), lf.end(), OurFriends());
// печатается: // Представьте-ка, наш друг Пятачок - также друг Пуха. if ( our_mutual_friend != lf.end() ) cout << "Представьте-ка, наш друг " << *our_mutual_friend << " также друг Пуха.\n";
return 0; |
}