Lambda function is an anonymous function object that can quickly define a function object inside the function. C's Lambda function was introduced in the C 11 standard, which can greatly simplify code writing and improve program readability and maintainability.
The syntax of the Lambda function is as follows:
[capture list] (parameter list) -> return type { function body }
Among them, the capture list is the capture list of the Lambda function, used to capture external variables; the parameter list is the parameter list, used to pass parameters; the return type is The return type is used to specify the return value type; the function body is the function body, which is used to implement the operation of the function.
The following is an example of a simple Lambda function:
auto add = [](int a, int b) -> int { return a + b; };
In the above example, the Lambda function uses the auto keyword to define a variable add to store the return value of the Lambda function. The Lambda function receives two parameters a and b and returns their sum. -> int specifies that the Lambda function returns an integer type.
Lambda functions are usually used where function objects need to be passed, such as algorithm functions, STL containers, etc. The following are some application scenarios of Lambda functions.
C The algorithm function in the standard library usually accepts a function object as a parameter and is used to operate on the elements in the container. Lambda functions can quickly define temporary function objects in algorithm functions.
For example, the following code uses the Lambda function to implement the std::for_each algorithm function to traverse the container:
std::vector<int> vec = {1, 2, 3, 4, 5}; std::for_each(vec.begin(), vec.end(), [](int value) { std::cout << value << " "; });
Among them, the Lambda function is used to output each element in the container.
The elements in an STL container are usually of object type, and the elements can be sorted, searched, etc. through the Lambda function.
For example, the following code uses the Lambda function to sort a vector container:
std::vector<int> vec = {3,1,2,5,4}; std::sort(vec.begin(), vec.end(), [](int a, int b) { return a < b; });
Among them, the Lambda function is used to specify the comparison of the size relationship between two elements to determine their position in the container. relative position.
In multi-threaded programming, Lambda functions can be used to define thread functions and implement thread operation logic.
For example, the following code uses the Lambda function to create a new thread:
std::thread t([]() { std::cout << "New thread" << std::endl; }); t.join();
Among them, the Lambda function is used to define the running logic of the new thread.
In GUI programming, Lambda functions can be used to capture control objects and implement event response functions.
For example, the following code uses the Lambda function to respond to the button click event:
QPushButton *button = new QPushButton("Click me"); connect(button, &QPushButton::clicked, [=] { std::cout << "Button clicked" << std::endl; });
Among them, the Lambda function is used to respond to the button click event to perform related operations.
In general, the Lambda function is a very convenient programming syntax that can simplify code writing and improve the readability and maintainability of the program. It is widely used in algorithm functions, STL containers, multi-threaded programming and GUI programming.
The above is the detailed content of Using Lambda functions and their application scenarios in C++. For more information, please follow other related articles on the PHP Chinese website!