
Alternative Methods for Summing Elements of a std::vector
Finding the sum of all elements in a std::vector is a common task with multiple efficient approaches. Here are several options:
Classic C 03 Techniques
For Loop:
1 2 3 | int sum_of_elems = 0;
for (std::vector<int>::iterator it = vector.begin(); it != vector. end (); ++it)
sum_of_elems += *it;
|
Copy after login
Standard Algorithm:
1 2 3 | # include <numeric>
sum_of_elems = std::accumulate(vector.begin(), vector. end (), 0);
|
Copy after login
Note: Be aware that the type of the last argument determines the result type.
Modern C Approaches (C 11 )
Automatic Type Handling:
1 2 3 4 | # include <numeric>
sum_of_elems = std::accumulate(vector.begin(), vector. end (),
decltype(vector)::value_type(0));
|
Copy after login
std::for_each:
1 2 3 | std::for_each(vector.begin(), vector. end (), [&](int n) {
sum_of_elems += n;
});
|
Copy after login
Range-Based For Loop:
1 2 | for (auto& n : vector)
sum_of_elems += n;
|
Copy after login
C 17 Enhancements
std::reduce:
1 2 3 | # include <numeric>
auto result = std::reduce(v.begin(), v. end ());
|
Copy after login
std::reduce handles result type inference and offers parallel execution capabilities for large collections.
The above is the detailed content of What are the Best Ways to Sum the Elements of a std::vector in C ?. For more information, please follow other related articles on the PHP Chinese website!