Вы можете использовать простую функцию усреднения, примерно так:
template <typename T, typename iterator> T avg(iterator const& begin, iterator const& end) {
T result;
size_t size(0);
for (iterator it = begin; it != end; ++it) {
result += *it;
size++;
}
return result/size;
}
Теперь, предполагая, что ваши значения находятся в наборе, вы можете сделать:
std::set<double> xs; // assuming your values are in there
double x = avg<double,std::set<double>::iterator>(xs.begin(), xs.end());
Не запустив его через g ++, я не уверен, какой из параметров шаблона может быть выведен автоматически.