How to use a lambda expression and the generate() function In C++

Create and initialize a list in C++ STL with a lambda expression and the generate() function. The lambda expression captures variables and defines the logic for   generating values. By applying the generate() function to the list range, the generated values are to be assigned to the respective list of elements. This approach provides a concise and efficient way to populate a list with custom-generated values.

Syntax 

std::generate(list.begin(), list.end(), [&]() { /* lambda expression */ });

Example 

C++




#include <iostream>
#include <list>
#include <algorithm>
 
int main() {
    std::list<int> myList(5);
    int value = 1;
    std::generate(myList.begin(), myList.end(), [&value]() { return value++; });
 
    // Print the contents of the list
    for (const auto& element : myList) {
        std::cout << element << " ";
    }
    std::cout << std::endl;
 
    return 0;
}


Output:

1 2 3 4 5


Different Ways to Initialize a List in C++ STL

Prerequisite: List in C++

Lists are sequence containers that allow non-contiguous memory allocation The following are the different ways to create and initialize a List in C++ STL.

  1. Initializing an empty List and pushing values one by one
  2. Specifying List size and initializing all values
  3. Initializing List like the arrays
  4. Initializing a list from an array
  5. Initializing a list from a vector
  6. Initializing a list from another List
  7. Initializing the List using the fill() function
  8. Using a lambda expression and the generate() function:

Similar Reads

1. Initializing an empty List and pushing values one by one

The standard way to initialize a list is to first create an empty list and then elements are added to that list using the inbuilt list_name.push_back() method....

2. Specifying List size and initializing all values

...

3. Initializing List like the arrays

Another way to initialize a list is by assigning a particular value to all the elements of the list. In this method, we pass a desired size for the list and the value to be stored for all the elements of that size....

4. Initializing a list from an array

...

5. Initializing a list from a vector

Another way of initialization is by passing a predetermined list of elements (initializer list) as an argument. The syntax for this method is shown below:...

6. Initializing from another List

...

7. Initializing the List using the fill() function

One can also initialize the list from an array with the same data type....

8. Using a lambda expression and the generate() function:

...