Я практикую лямбды:
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 для сортировки в порядке убывания, ничего особенного.Я добавил несколько заявлений для печати (но вынул их для этого поста), чтобы посмотреть, что происходит внутри лямбды.Они печатают весь вектор и значения 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
а b
параметры?
Постоянно ли b
находится в индексе 0
, в то время как a
повторяется?И если да, то не странно ли, что переданный в лямбду параметр second остается в элементе first ?Это зависит от компилятора?Спасибо!