Algorytm find_first_of zaimplementowany jest jako dwie przeciążone funkcje:
template <class InputIterator, class ForwardIterator> InputIterator find_first_of(InputIterator first1, InputIterator last1, ForwardIterator first2, ForwardIterator last2); template <class InputIterator, class ForwardIterator, class BinaryPredicate> InputIterator find_first_of(InputIterator first1, InputIterator last1, ForwardIterator first2, ForwardIterator last2, BinaryPredicate comp);
InputIterator - to taki iterator z którego może być wyłuskany obiekt, powinien też pozwalać wskazywać na następny iterator w sekwencji.
ForwardIterator - to taki iterator, który służy do przeglądania liniowej sekwencji wartości, aczkolwiek nie potrafi działać wstecz jak sama nazwa wskazuje. Doskonale nadaje się do wieloprzejściowego przeglądania danych.
Funkcje te różnią się tym, że w pierwszej domyślnym predykatem jest po prostu operator== (musi istnieć operator== dla argumentów typu wyłuskanych InputIterator i ForwardIterator), a w drugim można podać własny warunek za pomocą predykatu lub funkcji.
find_first_of operuje na dwóch kontenerach, przeglądajac je za pomocą iteratorów. Dla rozróżnienia nazwe je konternerem wzorcowym i kontenerem przesukiwanym.
find_first_of(przeszukiwanyKontener.begin(), przeszukiwanyKontener.end(), kontener_wzorcowy.begin(), kontener_wzorcowy.end());
Działa podobnie jak zwykły find z tą różnicą, że wyszukuje w zakresie wyznaczonym iteratorami kontenera wzorcowego pierwszego wystąpienia wartości w kontenerze przeszukiwanym (również w jego części lub całości wyznaczonej poprzez iteratory.
Aby skorzystać z algorytmu find_first_of należy włączyć plik nagłówkowy:
#include<algorithm>