Шаблонные функции. Какие преимущества?
но меня смущает вызов 2 дополнительных функций в шаблонеФункции заинлайнятся, за производительность тут переживать не стоит.У вас немного разные алгоритмы. В шаблоне никто не запрещает вам пройтись циклом по итераторам и посчитать среднее тем же способом, что и в первом варианте.Использование stl-функций предпочтительнее своего велосипеда. Читать код легче. Я увидел accumulate и сразу подумал о свёртке. А в первый пример пришлось вчитываться. К тому же он ещё и не оптимальный - ведь деление можно вынести из цикла.Данный вариант с шаблоном намного гибче - его можно использовать с любым контейнером, который реализует итератор.
Реализации функций не эквивалентны и будут возвращать разный результат, практически со 100% вероятностью.
В первом случае суммируется частное от значения и количества элементов, а во втором элементы сперва суммируются, а потом делятся на число элементов. В первом случае больше накопление погрешностей вычислений, больше операций деления, следовательно, меньшая точность вычислений и меньшая скорость работы.
Если в первом варианте деление вынести из цикла, то различие будет только в гибкости кода.