#include #include #include #include using namespace std; class Twice { public: bool operator()(size_t first, size_t second) const { return first == (second << 1); } }; int main() { string sarr[] = { "alpha", "bravo", "charley", "delta", "echo", "foxtrot", "golf", "hotel", "foxtrot", "golf", "hotel", "india", "juliet", "kilo" }; string search[] = { "foxtrot", "golf", "hotel" }; string *last = sarr + sizeof(sarr) / sizeof(string); copy ( find_end(sarr, last, search, search + 3), // sequence starting last, ostream_iterator{ cout, " " } // at 2nd 'foxtrot' ); cout << '\n'; size_t range[] = {2, 4, 6, 8, 10, 4, 6, 8, 10}; size_t nrs[] = {2, 3, 4}; copy // sequence of values starting at last sequence ( // of range[] that are twice the values in nrs[] find_end(range, range + 9, nrs, nrs + 3, Twice{}), range + 9, ostream_iterator{ cout, " " } ); cout << '\n'; } /* Displays: foxtrot golf hotel india juliet kilo 4 6 8 10 */