Home > Article > Backend Development > How do C++ lambda expressions work with other language features?
Lambda expressions can be used in conjunction with other language features of C++, including: Function pointers: Convert a lambda to a function pointer so that it can be used like an ordinary function pointer. std::function: Use std::function object to save lambda to facilitate the transfer of callable objects. Smart pointers: Use lambdas as destroy functions for smart pointers to manage memory.
C++ Lambda expressions combined with other language features
Lambda expressions are powerful tools in C++ that can be used to define Anonymous function. Not only can they be used independently, but they can also be combined with other language features to create powerful solutions.
Function Pointer
Lambda expressions can be converted to function pointers. This can be done in the following way:
auto func_ptr = [](int a, int b) { return a + b; };
Once converted, the function pointer can be used like a normal function pointer:
int result = func_ptr(10, 20);
std::function
std::function
Objects can hold callable objects, including lambda expressions. This makes it easier to pass lambda expressions where a function needs to be passed as an argument:
std::function<int(int, int)> func = [](int a, int b) { return a + b; };
Smart pointers
Lambda expressions can be used in conjunction with smart pointers , to manage memory. For example, you can use a lambda expression as the destruction function of a smart pointer:
unique_ptr<int> ptr(new int(10), [](int* p) { delete p; });
Practical case
Suppose we have a std::vector
, which contains student information. We want to sort students by their scores from high to low. We can use lambda expressions and the std::sort
function to achieve:
std::vector<Student> students = { {"Alice", 90}, {"Bob", 80}, {"Carol", 95}, }; std::sort(students.begin(), students.end(), [](const Student& a, const Student& b) { return a.grade > b.grade; });
After sorting, the students in the students
vector will be sorted from high to low by grades .
Conclusion
Lambda expressions are powerful tools in C++ that can be used in conjunction with other language features to create flexible and maintainable solutions. Through function pointers, std::function
, smart pointers, and practical examples, we demonstrate the versatility of lambda expressions.
The above is the detailed content of How do C++ lambda expressions work with other language features?. For more information, please follow other related articles on the PHP Chinese website!