Так текущий stl для реального сколь-нибудь сложного кода не подходит от слова совсем, потому что с ним нередко приходится делать несколько проходов вместо одного. Я как-то писал алгоритм для нахождения разницы двух последовательностей и последующего приведения одной к другой (с дополнительными ограничениями). Написал на stl. Получилась нечитаемая и неэффективная каша. До сих пор мне кажется что на обычных циклах оно было бы лучше.
да, когда что-то чуть менее тривиальное чем одинарный проход, то можно либо подумать как скомбинировать алгоритмы из stl (и может получиться хорошо и примеры тому есть, даже доклады про это есть), а может получиться не очень. И у меня нет однозначного ответа, каким путем лучше идти.