===== Algorytm seach_n ==== iterator search_n( iterator start, iterator end, size_t num, const TYPE& val ); iterator search_n( iterator start, iterator end, size_t num, const TYPE& val, BinPred p ); Funkcja search_n() szuka //num// wystapień w zasiegu kontenera [start,end). Jeżeli zostanie znalezione num kopii danego elementu występujących kolejno w sekwencji, funkcja zwraca iterator na pierwszy znaleziony element. W przeciwnym wypadku zwraca iterator na end danej sekwencji. Jeżeli predykat binarny jest zadany, to zostaje użyty do specyficznego porównania elementow. == Użycie standardowe search_n == Znajdź np. dwa wystąpienia słowa w kontenerze np. wektorze. vector vecA; vecA.push_back("Zebra"); vecA.push_back("Anakonda"); vecA.push_back("Anakonda"); vecA.push_back("Zyrafa"); //iterator wskazujacy na pierwszy element ze znalezionych w sekwencji vector itResult = search_n(vecA.begin(), vecA.end(), 2, "Anakonda"); == Użycie search_n z predykatem binarnym == Chcemy zdefiniować własny sposób porównania wyszukiwanych n elementów. Dla przykładu za równe uznajmy elementy których ostatnia litera jest taka sama. //deklaracja binarnego predykatu //zwraca TRUE gdy porownywane stringi maja ostatnia litere ta sama template struct string_equal_last : public binary_function { bool operator()(const T& x, const T& y) { if(typeid(T) != typeid(std::string)) //zabezpiecz przed uzyciem nie dla stringu return false; string::const_iterator ix = x.end(); string::const_iterator iy = y.end(); if(*--ix == *--iy) return true; return false; } }; //wyszukanie 4 kolejnych elementów które mają taką samą ostatnią literę jaką ma "Anakonda" itResult = search_n(vecA.begin(), vecA.end(), 4, "Anakonda", string_equal_last()); ===== Źródło: adjacent_find.cpp ===== {{:search_n.ltrzaska.cpp|}}