Vector fill c++: In the previous article, we have discussed about C++ std::vector Why should I use std::vector with example. Let us learn how to Fill a Vector with Random Numbers in C++ Program.
Filling a Vector with Random Numbers in C++
C++ vector fill: In this article, we will learn to fill std::vector
with random numbers by the help of std::generate
.
Syntax: template<typename _FIter, typename _Generator> void generate(_FIter start, _FIter end, _Generator gen);
Here the elements will be updated from start to end-1 using gen
function. If a vector has size n, then std::generate
calls gen function
n number of times and copies elements from start to end-1.
Let’s see one by one.
- Fill random Numbers in std::vector using Lambda functions
- Fill Random Numbers in std::vector using a Functor
Filling random Numbers in std::vector using Lambda functions :
Fill a vector c++: Let’s try to fill std::vector
of size 5 with random numbers from 0 to 30. Then by calling gen function
std::generates iterates from start to end.
During iterations, lambda function is called and to each corresponding entry, returned value is assigned to the vector.
#include <iostream> #include <stdlib.h> #include <vector> #include <algorithm> int main(){ // Initialize a vector with 10 elements with value 0 std::vector<int> vecRandomNo(5); //Vector is filled with 10 random numbers // 10 random numbers generated using lambda function std::generate(vecRandomNo.begin(), vecRandomNo.end(), []() { return rand() % 30; }); std::cout << "5 Random Numbers generated by Lambda Function are : " << std::endl; for (int val : vecRandomNo) std::cout << val << std::endl; }
Output : 5 Random Numbers generated by Lambda Function are : 13 16 27 25 23
Filling Random Numbers in std::vector using a Functor :
C++ std fill: Let’s try to fill std::vector
with 5 random numbers with functor. Then std::generate
iterates from start to end of the vector.
During iterations, RandomNoGenerator functor is called and to each corresponding entry, returned value is assigned to the vector.
#include <iostream> #include <stdlib.h> #include <vector> #include <algorithm> struct RandomNoGenerator { int maxValue; RandomNoGenerator(int max) : maxValue(max) { } int operator()() { return rand() % maxValue; } }; int main(){ // Initialize a vector with 10 elements of value 0 std::vector<int> vecRandomNo(5); std::generate(vecRandomNo.begin(), vecRandomNo.end(), []() { return rand() % 100; }); // Generate 5 random numbers by a Functor // Assign the values to the vector std::generate(vecRandomNo.begin(), vecRandomNo.end(), RandomNoGenerator(30)); std::cout << "5 Random Numbers generated by Functor are : " << std::endl; for (int val : vecRandomNo) std::cout << val << std::endl; return 0; }
Output : 5 Random Numbers generated by Functor are : 25 16 12 9 1