0
is_partitioned(vect.begin(), vect.end(), [](int x)
    { return x%2==0;})? cout << "Vector is partitioned": cout << "Vector is not partitioned";
    cout << e

ndl;

I'm unable to understand this code due to [](int x). please help

rawrex
  • 4,044
  • 2
  • 8
  • 24

1 Answers1

6

The [](int x) is actually just a part of the unnamed lambda function object:

// Return true if x is divisible by 2, false otherwise
[] (int x) { return x%2 == 0; } // lambda that acts as a predicate
  • [] denotes a capture list

  • (int x) is a parameter list

  • {...} part is the body

Where the later two are just like in regular functions.

You supply this function (function object) as a predicate to the algorithm is_partitioned, so to have a custom predicate. Note, that the is_partitioned, in this case, has the following form:

is_partitioned(first, last, predicate); // Where the predicate is the lambda

For more information, refer to the documentation.

rawrex
  • 4,044
  • 2
  • 8
  • 24