gpt4 book ai didi

c++ - 如何参数化用作另一个 lambda 参数的 lambda

转载 作者:行者123 更新时间:2023-11-27 22:37:47 25 4
gpt4 key购买 nike

#include <iostream>

// How to parameterize this lambda and use it in the second lambda?
auto print = []() { std::cout << "in print" << std::endl; };

auto repeat = [](auto function, const int num_repeat) {
int ctr = 0;
while (ctr++ < num_repeat) {
function();
}
};

int main() {
repeat(print, 3);
return 0;
}

在上面的 c++ 示例中,我在另一个 lambda repeat 中使用了一个 lambda 函数 print(它不接受任何参数)作为参数。这适用于以下输出:

$ ./a.out 
in print
in print
in print

但是,我想将一个参数(或参数的可变列表)传递给 print 并在 repeat 中使用它。是否可以?例如,修改后的 print 看起来像:

auto print = [](std::string& name) { std::cout << "hello " << name << std::endl; };

最佳答案

我没看出问题所在?

#include <iostream>
#include <string>

// How to parameterize this lambda and use it in the second lambda?
auto print = []( const std::string& s ) { std::cout << s << std::endl; };

auto repeat = [](auto function, const int num_repeat) {
int ctr = 0;
while (ctr++ < num_repeat) {
function( "call #" + std::to_string( ctr ) );
}
};

int main() {
repeat(print, 3);
}

您尝试了什么没有起作用?

关于c++ - 如何参数化用作另一个 lambda 参数的 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52051064/

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