The simplest way to sum the elements of a vector is to use the accumulate function. This tutorial will describe the different ways to sum the elements of a vector with code examples.
Table of contents
Sum Elements of a Vector Using accumulate
We can use the built-in accumulate() function from the numeric library. The function accumulates all the values present in the specified range. The function takes in a beginning iterator, an end iterator, and an initial value. Let’s look at an example of summing the elements of a vector of integers.
#include <iostream> #include <vector> #include <numeric> int main() { // Vector of int std::vector<int> vec{0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55}; // Call accumulate function int sum = std::accumulate(vec.begin(), vec.end(), 0.0); // Print elements and sum std::cout<< "Vector elements: "; for (auto i : vec) std::cout<<i<<" "; std::cout << std::endl; std::cout << "Sum of elements in vector: " << sum << std::endl; return 0; }
Let’s run the code to get the result:
Vector elements: 0 1 1 2 3 5 8 13 21 34 55 Sum of elements in vector: 143
Sum Elements of a Vector Using for loop
We can use a for loop and the compound assignment operator to sum the values in a vector. Let’s look at an example of summing the elements of a vector of integers.
#include <iostream> #include <vector> int main() { // Vector of int std::vector<int> vec{0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55}; int sum = 0; // Sum elements using a for loop for (int i=0; i<vec.size(); i++) sum += vec[i]; // Print elements and sum std::cout<< "Vector elements: "; for (auto i : vec) std::cout<<i<<" "; std::cout << std::endl; std::cout << "Sum of elements in vector: " << sum << std::endl; return 0; }
Let’s run the code to get the result:
Vector elements: 0 1 1 2 3 5 8 13 21 34 55 Sum of elements in vector: 143
Sum Elements of a Vector Using Range-based for loop
The range-based for loop was introduced in C++11 and provides a more readable equivalent to the traditional for loop. Let’s look at an example of summing the elements of a vector of integers.
#include <iostream> #include <vector> int main() { // Vector of int std::vector<int> vec{0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55}; int sum = 0; // Get sum of elements using range-based loop for (auto var : vec) sum += var; // Print elements and sum std::cout<< "Vector elements: "; for (auto i : vec) std::cout<<i<<" "; std::cout << std::endl; std::cout << "Sum of elements in vector: " << sum << std::endl; return 0; }
Let’s run the code to get the result:
Vector elements: 0 1 1 2 3 5 8 13 21 34 55 Sum of elements in vector: 143
Sum Elements of a Vector Using for_each
We can use the std::for_each function, which performs a provided function on each element within a specified range. Let’s look at an example of using the for_each function with a sum function.
#include <iostream> #include <vector> // Initial sum value int sum=0; // Function to sum elements void func (int val) { sum += val; } int main() { // Vector of int std::vector<int> vec{0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55}; // Call for_each function using sum function std::for_each(vec.begin(), vec.end(), func); // Print elements and sum to the console std::cout<< "Vector elements: "; for (auto i : vec) std::cout<<i<<" "; std::cout << std::endl; std::cout << "Sum of elements in vector: " << sum << std::endl; return 0; }
Vector elements: 0 1 1 2 3 5 8 13 21 34 55 Sum of elements in vector: 143
Sum Elements of a Vector Using for_each with Lambda
We can use the std::for_each function, which performs a provided function on each element within a specified range. Let’s look at an example of using a lambda function.
#include <iostream> #include <vector> int main() { int sum = 0; // Vector of int std::vector<int> vec{0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55}; ] // Call for_each function using lambda function std::for_each(vec.begin(), vec.end(), [&] (int n){sum += n;}); // Print elments and sum of elements std::cout<< "Vector elements: "; for (auto i : vec) std::cout<<i<<" "; std::cout << std::endl; std::cout << "Sum of elements in vector: " << sum << std::endl; return 0; }
Vector elements: 0 1 1 2 3 5 8 13 21 34 55 Sum of elements in vector: 143
Sum Elements of a Vector Using an Iterator
We can use the auto
keyword to ask the compiler to deduce the variable type from the initialization. Let’s look at an example of summing the elements of a vector using an iterator.
#include <iostream> #include <vector> int main() { // Initial sum value int sum =0; // Vector of int std::vector<int> vec{0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55}; // Define iterator and sum elments for (auto it = vec.begin(); it != vec.end(); ++it){ sum+= *it; } // Print elements and sum std::cout<< "Vector elements: "; for (auto i : vec) std::cout<<i<<" "; std::cout << std::endl; std::cout << "Sum of elements in vector: " << sum << std::endl; return 0; }
Let’s run the code to
Vector elements: 0 1 1 2 3 5 8 13 21 34 55 Sum of elements in vector: 143
Summary
Congratulations on reading this tutorial to the end! We have covered several ways to check if an element exists in a vector and how to count the number of occurrences of an element in a vector.
For further reading on C++, go to the articles:
- How to Convert Char Array to String in C++
- How to Reverse a String in C++
- How to Iterate Through a Vector in C++
If you want to test your C++ code, try our free C++ Code Compiler!
Have fun and happy researching!
Suf is a senior advisor in data science with deep expertise in Natural Language Processing, Complex Networks, and Anomaly Detection. Formerly a postdoctoral research fellow, he applied advanced physics techniques to tackle real-world, data-heavy industry challenges. Before that, he was a particle physicist at the ATLAS Experiment of the Large Hadron Collider. Now, he’s focused on bringing more fun and curiosity to the world of science and research online.