// find_first_of.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <algorithm> #include <vector> #include <string> #include <iostream> using namespace std; #include <list> #include <set> #include <assert.h> //find the first instance in s_array of any characters in to_find int main(int argc, char* argv[]) { string s_array[] = { "Ee", "eE", "ee", "Oo", "oo", "ee" }; string to_find[] = { "oo", "gg", "ee" }; // returns first occurrence of "ee" -- &s_array[2] string *found_it = find_first_of( s_array, s_array+6, to_find, to_find+3 ); // generates: // found it: ee // &s_array[2]: 0x7fff2dac // &found_it: 0x7fff2dac if ( found_it != &s_array[6] ) { cout << "found it: " << *found_it << "/n/t" << "&s_array[2]:/t" << &s_array[2] << "/n/t" << "&found_it:/t" << found_it << "/n"; } vector< string> svec( s_array, s_array+6); vector< string > svec_find( to_find, to_find+3 ); // returns occurrence of "oo" -- svec.end()-2 vector< string>::iterator found_it2; found_it2 = find_first_of(svec.begin(), svec.end(), svec_find.begin(), svec_find.end(), equal_to<string>() ); // generates: // found it, too: oo // &svec.end()-2: 0x100067b0 // &found_it2: 0x100067b0 if ( found_it2 != svec.end() ) { cout << "found it, too: " << *found_it2 << "/n/t" << "&svec.end()-2:/t" << svec.end()-2 << "/n/t" << found_it2; } return 0; } /* template<class _FI1, class _FI2> inline _FI1 find_first_of(_FI1 _F1, _FI1 _L1, _FI2 _F2, _FI2 _L2) { for (; _F1 != _L1; ++_F1) for (_FI2 _X2 = _F2; _X2 != _L2; ++_X2) if (*_F1 == *_X2) return (_F1); return (_F1); } */ /* template<class _FI1, class _FI2, class _Pr> inline _FI1 find_first_of(_FI1 _F1, _FI1 _L1, _FI2 _F2, _FI2 _L2, _Pr _P) { for (; _F1 != _L1; ++_F1) for (_FI2 _X2 = _F2; _X2 != _L2; ++_X2) if (_P(*_F1, *_X2)) return (_F1); return (_F1); } */