Деякі алгоритми оперують одночасно двома контейнерами. Наприклад, якщо алгоритм find() шукає вказане значення в одному контейнері, алгоритм serch() шукає цілу послідовність значень, задану одним контейнером, в іншому контейнері. Приклад його використання приведено в програмі 15.4
#include<iostream>
#include<algorithm>
#include<conio>
using namespace std;
int source[]={11,44,33,11,22,33,11,22,44};
int pattern[]={11,22,33};
int main()
{ int *ptr;
ptr=search(source,source+9,pattern,pattern+3);
if(ptr==source+9)//зупинилися після останнього
cout<<"Spivpadinna ne znajdeno\n";
else
cout<<"Spivpadinna v pozycii "<<(ptr-source)<<endl;
getch();
return 0;
}
Програма 15.4
Результат роботи програми

Алгоритм шукає послідовність (11,12,13), задану масивом pattern, в масиві source. Якщо значення ітератора ptr опиняються за межами масиву source, виводиться відповідне повідомлення.
Параметрами алгоритму serch() і подібних на нього не зобов’язані бути контейнери одного типу. Вихідний контейнер може бути, наприклад, вектором, а маска пошуку – масивом. така універсальність є сильною стороною STL.