【发布时间】:2019-01-21 18:16:18
【问题描述】:
我对 c++11 真的很陌生,所以在理解 lamda 表达式的同时,我充满了疑问。我无法理解应该将多少参数传递给 lamda 表达式。
喜欢
vector<int> v {4, 1, 3, 5, 2, 3, 1, 7};
vector<int>:: iterator p = find_if(v.begin(), v.end(), [](int i)
{
return i > 4;
});
这里只有一个参数被传递给lamda 函数。 i 的值是什么,它从哪里传递给lamda。
但在以下情况下,传递了 2 个参数
sort(v.begin(), v.end(), [](const int& a, const int& b) -> bool
{
return a > b;
});
这两个值是从哪里传给lamda的,请解释一下,请解开我的疑惑
【问题讨论】:
-
每个需要谓词或函数对象的算法都会根据具体情况指定对它的要求。您可以在 cppreference 上查找它。这是
std::sort:en.cppreference.com/w/cpp/algorithm/sort -
给-1评分是什么意思,我说我是新手,我做了很多研究仍然没有得到令人信服的答案所以来到这里,如果给-ve就没有回答评分那么我怎样才能得到正确的答案