How to pass an array into a lambda function in C++

4 Answers

0 votes
#include <iostream>
 
void print_array(int arr[], int len) {
    std::cout << "Array elements: ";
     
    for (int i = 0; i < len; i++) {
        std::cout << arr[i] << " ";
    }
    std::cout << "\n";
}
 
int main() {
   int arr[] = {1, 2, 3, 4, 5, 6};
    
   auto lambda = [&arr]() {
      std::cout << "Array elements: ";
      for (int i = 0; i < 6; i++) {
         std::cout << arr[i] << " ";
      }
      std::cout << "\n";
       
      // Modify the array
      arr[0] = 999;
   };
    
   lambda();
    
   std::cout << "After lambda(): ";
    
   print_array(arr, 6);
}
 
   
    
/*
run:
   
Array elements: 1 2 3 4 5 6 
After lambda(): Array elements: 999 2 3 4 5 6 
 
*/

 



answered Aug 5, 2025 by avibootz
0 votes
#include <iostream>

void print_array(int arr[], int len) {
    std::cout << "Array elements: ";
    
    for (int i = 0; i < len; i++) {
        std::cout << arr[i] << " ";
    }
    std::cout << "\n";
}

int main() {
   int arr[] = {1, 2, 3, 4, 5, 6};
   
    auto lambda = [](int* array, size_t size) {
      std::cout << "Array elements: ";
      for (size_t i = 0; i < size; ++i) {
         std::cout << array[i] << " ";
      }
      std::cout << "\n";
      
      // Modify the array
      array[0] = 999;
   };
   
   lambda(arr, 6);
   
   std::cout << "After lambda(): ";
   
   print_array(arr, 6);
}

  
   
/*
run:
  
Array elements: 1 2 3 4 5 6 
After lambda(): Array elements: 999 2 3 4 5 6 

*/

 



answered Aug 5, 2025 by avibootz
0 votes
#include <iostream>
#include <array> // Required for std::array

// Specify the type and size in the parameter
void print_array(const std::array<int, 6>& arr) {
    std::cout << "Array elements: ";
    for (const auto& element : arr) {
        std::cout << element << " ";
    }
    std::cout << "\n";      
}

int main() {
    std::array<int, 6> arr = {1, 2, 3, 4, 5, 6};

    auto lambda = [&arr]() {
        std::cout << "Array elements: ";
        for (const auto& element : arr) {
            std::cout << element << " ";
        }
        std::cout << "\n";      
        arr[0] = 999;  // Modify the array
    };

    lambda();

    std::cout << "After lambda(): ";
    print_array(arr);
}

   
    
/*
run:
   
Array elements: 1 2 3 4 5 6 
After lambda(): Array elements: 999 2 3 4 5 6 
 
*/

  
 

 



answered Aug 5, 2025 by avibootz
0 votes
#include <iostream>
#include <array>

template <std::size_t N>
void print_array(const std::array<int, N>& arr) {
    std::cout << "Array elements: ";
    for (const auto& element : arr) {
        std::cout << element << " ";
    }
    std::cout << "\n";      
}

int main() {
    constexpr std::size_t size = 6;
    std::array<int, size> arr = {1, 2, 3, 4, 5, 6};

    auto lambda = [&arr]() {
        std::cout << "Array elements: ";
        for (const auto& element : arr) {
            std::cout << element << " ";
        }
        std::cout << "\n";      
        arr[0] = 999;  // Modify the array
    };

    lambda();

    std::cout << "After lambda(): ";
    print_array(arr);
}

   
    
/*
run:
   
Array elements: 1 2 3 4 5 6 
After lambda(): Array elements: 999 2 3 4 5 6 
 
*/

 



answered Aug 5, 2025 by avibootz
...