С++ для начинающих

         

Алгоритм 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;

}



Содержание раздела