gpt4 book ai didi

c++ - 将数组传递给 lambda 函数

转载 作者:行者123 更新时间:2023-11-28 04:33:17 25 4
gpt4 key购买 nike

我目前正在学习 lambda 函数的工作原理,因此尝试将数组传递给 Lambda 函数,我想在其中打印它。我的问题是,我不明白如何将数组传递给函数。问题似乎源于数组传递给 lambda 函数时的转换。这是函数的当前状态:

auto print_array = [](int &array, int i) -> int {

//print out array

return 0;

}(&actual_array, actual_i);

非常感谢您的帮助!

最佳答案

你不能按值传递数组,你传递指针的语法也是错误的。

虽然将指针或引用传递给数组实际上很容易。使用通用 lambda,您可以忽略维度是类型的一部分这一事实,只需简单地编写:

#include <iostream>

int main()
{
int actual_array[5] = {7,8,9,2,1};
const int actual_i = 3;

auto print_array = [](auto& ar, int i) {
std::cout << ar[i] << '\n';
};

print_array(actual_array, actual_i);
}

在此示例中,您调用的 print_array 实例接受一个 int(&)[5],隐藏在 auto& 后面。

如果出于某种原因你不能遵守通用的 lambda(它基本上是一个模板),那就走老路:

#include <iostream>

int main()
{
int actual_array[5] = {7,8,9,2,1};
const int actual_i = 3;

auto print_array = [](const int* ar, int i) {
std::cout << ar[i] << '\n';
};

print_array(&actual_array[0], actual_i);
}

这些都不是特定于 lambda 的。这对任何函数都是一样的。

关于c++ - 将数组传递给 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52279897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com