Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#lambda函数意义与C++;翻译 我试图从C++到C++对我在网上找到的一个图像进行过滤功能,这样我就可以编译一个DLL,并在我的项目中使用它。 原始C#代码为:_C#_C++_Lambda - Fatal编程技术网

C#lambda函数意义与C++;翻译 我试图从C++到C++对我在网上找到的一个图像进行过滤功能,这样我就可以编译一个DLL,并在我的项目中使用它。 原始C#代码为:

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

工作? depthArrayRowIndex在以下方面的含义是什么:

    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,…
而不是
width

depthArrayRowIndex
基本上是(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可以跳过-Bar < /Cult>部分。不返回任何东西的lambdas可以有<代码> ->空< /COD>跳过。

可以列出捕获的参数(如果它们是由值或引用捕获的)在C++ lambda的<代码> [/COD]中,但是C∧lambdas相当于捕获由智能引用隐式使用的所有内容。如果LAMBDA的生存期限制在C++ lambda创建的范围内,则< > >是等效的


如果它可以持续更长的时间,您需要处理lambda捕获的数据的生命周期管理,并且您需要更加小心,只按值捕获(并且可能在捕获
共享ptr
之前将数据打包到
共享ptr
).

这是lambda的参数。对不起……我很笨!!你能更好地解释lambda函数的参数是用来做什么的吗?向lambda传递一些东西,与向函数传递参数相同。噢。谢谢你的解释:-)这是lambda的一个参数。对不起…我很笨!!你能更好地解释lambda函数的参数是用来做什么的吗?传递给lambda的东西,和函数的参数一样。谢谢你的解释:-)是的。按值是非常重要的!是的。按值是非常重要的!