C#lambda函数意义与C++;翻译 我试图从C++到C++对我在网上找到的一个图像进行过滤功能,这样我就可以编译一个DLL,并在我的项目中使用它。 原始C#代码为:
工作? depthArrayRowIndex在以下方面的含义是什么:C#lambda函数意义与C++;翻译 我试图从C++到C++对我在网上找到的一个图像进行过滤功能,这样我就可以编译一个DLL,并在我的项目中使用它。 原始C#代码为:,c#,c++,lambda,C#,C++,Lambda,工作? depthArrayRowIndex在以下方面的含义是什么: var depthIndex = depthArrayColumnIndex + (depthArrayRowIndex * width); 这是我的C++翻译: concurrency::parallel_for(0, width, [&widthBound, &heightBound, &smoothDepthArray] () { for (int depthAr
var depthIndex = depthArrayColumnIndex + (depthArrayRowIndex * width);
这是我的C++翻译:
concurrency::parallel_for(0, width, [&widthBound, &heightBound, &smoothDepthArray] () {
for (int depthArrayColumnIndex = 0; depthArrayColumnIndex < width; depthArrayColumnIndex++) {
int depthIndex = depthArrayColumnIndex + (depthArrayRowIndex * width);
.
.
.
... other stuff ...
}
concurrency::并行(0,width,[&widthbund,&heightBound,&smoothDepthArray](){
对于(int-DeptharyColumnIndex=0;DeptharyColumnIndex
但显然,这里的depthArrayRowIndex没有任何意义。
C++中的C代码如何翻译?< /P>
>非常感谢!!!(<)/P> < P>在此情况下,“DeDtRayayRoWi饰行”是lambda函数的输入参数,因此在C++版本中,您可能需要更改
[&widthBound, &heightBound, &smoothDepthArray] ()
为了
如果您想进一步了解C#lambda语法,此链接可能会很有用
在此情况下,“DeDtRayayRoWieldCype”是lambda函数的输入参数,因此在C++版本中,您可能需要更改
[&widthBound, &heightBound, &smoothDepthArray] ()
为了
如果您想进一步了解C#lambda语法,此链接可能会很有用
depthArrayRowIndex
基本上是(并行)外部for循环的索引变量/值。它将从0
包含到高度
排除:
一点解释(C#):parallel for的整个第三个参数是lambda函数,该操作得到一个Int32参数,它恰好是循环索引
所以我认为你的C++翻译应该从:
concurrency::parallel_for(0,height,…
而不是widthdepthArrayRowIndex
基本上是(parallel)outer for循环的索引变量/值。它将从0
包含变为height
独占:
Foo => {
// code
return bar; // bar is of type Bar
}
一点解释(C#):parallel for的整个第三个参数是lambda函数,该操作得到一个Int32参数,它恰好是循环索引
所以我认为你的C++翻译应该从:
concurrency::parallel_表示(0,高度,…
而不是width
)
Foo => {
// code
return bar; // bar is of type Bar
}
与
(Foo) => {
// code
return bar; // bar is of type Bar
}
将此转换为C++ do /p>
[&](int Foo)->Bar {
// code
return bar; // bar is of type Bar
}
Assix>代码> Foo是“代码> int ”。在C++中,单行LAMBDAS可以跳过-Bar < /Cult>部分。不返回任何东西的lambdas可以有<代码> ->空< /COD>跳过。
可以列出捕获的参数(如果它们是由值或引用捕获的)在C++ lambda的<代码> [/COD]中,但是C∧lambdas相当于捕获由智能引用隐式使用的所有内容。如果LAMBDA的生存期限制在C++ lambda创建的范围内,则< > >
是等效的
如果它可以持续更长时间,您需要处理lambda捕获的数据的生命周期管理,并且您需要更加小心,只按值捕获(在捕获共享ptr
之前,可能会将数据打包到共享ptr
)
与
(Foo) => {
// code
return bar; // bar is of type Bar
}
将此转换为C++ do /p>
[&](int Foo)->Bar {
// code
return bar; // bar is of type Bar
}
Assix>代码> Foo是“代码> int ”。在C++中,单行LAMBDAS可以跳过可以列出捕获的参数(如果它们是由值或引用捕获的)在C++ lambda的<代码> [/COD]中,但是C∧lambdas相当于捕获由智能引用隐式使用的所有内容。如果LAMBDA的生存期限制在C++ lambda创建的范围内,则< > >是等效的
如果它可以持续更长的时间,您需要处理lambda捕获的数据的生命周期管理,并且您需要更加小心,只按值捕获(并且可能在捕获
共享ptr
之前将数据打包到共享ptr
).这是lambda的参数。对不起……我很笨!!你能更好地解释lambda函数的参数是用来做什么的吗?向lambda传递一些东西,与向函数传递参数相同。噢。谢谢你的解释:-)这是lambda的一个参数。对不起…我很笨!!你能更好地解释lambda函数的参数是用来做什么的吗?传递给lambda的东西,和函数的参数一样。谢谢你的解释:-)是的。按值是非常重要的!是的。按值是非常重要的!