Реализации алгоритмов стандартной библиотеки С++ очень просты и эффективны. Поэтому было бы полезным уделить некоторое время на чтение исходников.
Как уже было отмечено, требования к контейнерам и итераторам определяют, какие возможности (типы, методы и операции) у нас есть для написания алгоритмов. В частности, из определения алгоритма find:
можно понять, что итераторы обладают минимальными требованиями, а именно, оператор инкремента, оператор сравнения, оператор разыменования. Реализация данного алгоритма имеет следующий вид:
Наконец, один из алгоритмов, меняющих последовательности, прямой алгоритм копирования и его предикатная форма. Кстати, предикатная форма была введена только в стандарте С++11, однако алгоритм очень полезен в случае, когда нужно выбрать все элементы, удовлетворяющие условию.