您好我在Windows文档中找到了此代码
但我没有得到什么意思
[&]
Run Code Online (Sandbox Code Playgroud)
只是请你能清楚我该怎么办?
它不是c ++标准的真实?
这是代码:
void parallel_matrix_multiply(double** m1, double** m2, double** result, size_t size)
{
parallel_for (size_t(0), size, [&](size_t i)
{
for (size_t j = 0; j < size; j++)
{
double temp = 0;
for (int k = 0; k < size; k++)
{
temp += m1[i][k] * m2[k][j];
}
result[i][j] = temp;
}
});
}
Run Code Online (Sandbox Code Playgroud)
pmr*_*pmr 14
它引入了一个lambda表达式.方括号的内容表示在lambda中捕获的内容.只有一个&
在那里意味着lambda中提到的所有内容都可以在其范围之外找到,可以通过引用来捕获.
例:
int a = 0;
auto l = [&]() {
++a; // a refers to the a outside of this scope through a reference
}
l(); // execute the lambda
Run Code Online (Sandbox Code Playgroud)
这是用于lambda表达式的capture子句.lambda表达式可以访问其封闭范围的所有变量(即,如果lambda在函数内,它可以访问该函数内的所有变量).这[&]意味着lambda将通过引用获取所有变量.它们也可以按值使用,在这种情况下你会使用[=].您还可以指定需要以特定方式获取的具体变量,例如此代码:
[&X, =]
Run Code Online (Sandbox Code Playgroud)
表示lambda将X通过引用获取变量,而所有其他变量则按值.
小智 5
[&]意味着你可以访问lambda表达式中周围代码的变量,并且可以通过referenc访问它(即你可以修改它们).在示例代码中,您可以看到它m1, m2, result并size在lambda experssion中使用,即使它们不作为参数传递.
| 归档时间: |
|
| 查看次数: |
4434 次 |
| 最近记录: |