我正在练习 lambdas:
int main()
{
std::vector<int> v {1,2,3,4};
int count = 0;
sort(v.begin(), v.end(), [](const int& a, const int& b) -> bool
{
return a > b;
});
}
这只是 GeeksForGeeks 的代码,按降序排序,没什么特别的。我添加了一些打印语句(但在这篇文章中将它们取出)以查看 lambda 内部发生了什么。他们打印整个向量,以及a
和b
值:
1 2 3 4
a=2 b=1
2 1 3 4
a=3 b=2
3 2 1 4
a=4 b=3
4 3 2 1 <- final
所以我更详细的问题是:向量元素传递到a
andb
参数的顺序背后的逻辑是什么?
迭代时是否b
永久位于索引处?如果是这样,传递给 lambda 的第二个参数停留在第一个元素是不是有点奇怪?它是特定于编译器的吗?谢谢!0
a