Summation Techniques for Elements in a std::vector
Finding the sum of elements in a std::vector is a common operation. Here are various approaches:
C 03
Classic For Loop:
int sum_of_elems = 0; for (std::vector<int>::iterator it = vector.begin(); it != vector.end(); ++it) sum_of_elems += *it;
Standard Algorithm:
#include <numeric> sum_of_elems = std::accumulate(vector.begin(), vector.end(), 0);
C 11 and Above
Automatic Type Tracking:
#include <numeric> sum_of_elems = std::accumulate(vector.begin(), vector.end(), decltype(vector)::value_type(0));
std::for_each:
std::for_each(vector.begin(), vector.end(), [&] (int n) { sum_of_elems += n; });
Range-Based For Loop:
for (auto& n : vector) sum_of_elems += n;
C 17 and Above
std::reduce:
#include <numeric> auto result = std::reduce(v.begin(), v.end());
This function infers the result type based on the vector's element type, allowing for automatic handling of different numeric types.
The above is the detailed content of How Can I Efficiently Sum the Elements of a std::vector in C ?. For more information, please follow other related articles on the PHP Chinese website!