我正在尝试从Internet上找到的图像的C#转换为C ++的过滤功能,以便可以编译DLL并将其用于我的项目中。
原始的C#代码为:
Parallel.For(0, height, depthArrayRowIndex => {
for (int depthArrayColumnIndex = 0; depthArrayColumnIndex < width; depthArrayColumnIndex++) {
var depthIndex = depthArrayColumnIndex + (depthArrayRowIndex * width);
.
.
.
... other stuff ...
}
我的问题的第一部分是:如何
depthArrayRowIndex => {
作品?
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 ...
}
但显然
depthArrayRowIndex
在这里没有任何意义。如何在C ++中的有效代码中转换C#代码?
非常非常感谢你 !!! :-)
最佳答案
在这种情况下,“ depthArrayRowIndex”是lambda函数的输入参数,因此在您的C ++版本中,您可能需要更改
[&widthBound, &heightBound, &smoothDepthArray] ()
对于
[&widthBound, &heightBound, &smoothDepthArray] (int depthArrayRowIndex)
如果您想进一步了解C#lambda语法,此链接可能会很有用
http://msdn.microsoft.com/en-us/library/vstudio/bb397687.aspx