I've managed to wrap my head around some of C++'s functional capacities (for_each, mapping functions, using iterators...) but the construction of the templates and function argument lists for taking in generic containers and iterators still eludes me. I have a practical example I'm hoping someone can illustrate for me:
Take the following function that processes an incoming std::vector and builds a running total of many data-points/iterations of a process:
/* the for-loop method - not very savvy */
void UpdateRunningTotal (int_vec& total, int_vec& data_point) {
for (int i = 0; i < V_SIZE; i++) {
total[i] += data_point[i];
}
}
typedef int_vec std::vector<int>;
int_vec running_total (V_SIZE, 0); // create a container to hold all the "data points" over many iterations
/* further initialization, and some elaborate loop to create data points */
UpdateRunningTotal (running_total, iteration_data);
/* further processing */
The above works, but I'd much rather have a function that takes iterators and performs this summation. Even better, have a generic parameter list with the type deduced instead of specifying the container type, i.e.:
UpdateRunningTotal (iteration_data.begin(), iteration_data.end(), running_total.begin());
I'm really lost at this point and need a little guidance to find how to define the template and argument lists to make the function generic. What would the template and function definition look like? I'm already familiar with a way to perform this specific task using STL functionality - I'm looking for illustration of the generic function/template definition.