An dieser Stelle soll noch einmal verdeutlicht werden, was "generische Algorithmen" eigentlich bedeutet:
Der Sinn des Wortes generic in diesem Zusammenhang bedeutet soviel wie vielseitig, nicht spezifisch.
Generische Algorithmen sind Funktionen beziehungsweise Funktionstemplates, mit denen unterschiedliche Kollektionen bearbeitet werden können. Dafür benötigen diese Funktionen Iteratoren, mit Hilfe derer sie auf die Elemente der Kollektion zugreifen können.

Um solche Funktionen nutzen zu können, muss die Informationsdatei (Headerdatei) algorithm eingefügt werden.

Lexikografisch (alphabetisch) geordnete Liste der generischen Algorithmen
(entnommen aus der sgi-Dokumentation)
accumulate adjacent_difference adjacent_find advance
binary_search copy copy_backward copy_n
count count_if distance equal
equal_range fill fill_n find
find_end find_first_of find_if for_each
generate generate_n includes inner_product
inplace_merge iota is_heap is_sorted
iter_swap lexicographical_compare lexicographical_compare_3way lower_bound
make_heap max max_element merge
min min_element mismatch next_permutation
nth_element partial_sort partial_sort_copy partial_sum
partition pop_heap power prev_permutation
push_heap random_sample random_sample_n random_shuffle
remove remove_copy remove_copy_if remove_if
replace replace_copy replace_copy_if replace_if
reverse reverse_copy rotate rotate_copy
search search_n set_difference set_intersection
set_symmetric_difference set_union sort sort_heap
stable_partition stable_sort swap swap_ranges
transform uninitialized_copy uninitialized_copy_n uninitialized_fill
uninitialized_fill_n unique unique_copy upper_bound

Es geht weiter mit find.