官术网_书友最值得收藏!

Using the Lambda expression for a tiny function

Imagine we have a tiny one-line function that we invoke only once. It's better if we write the operation of that function directly when we need it. We actually had this function in our previous example when discussing the C++ Standard Library. Just go back to the for_each.cpp file and we will find the PrintOut() function that is only invoked once by for_each(). We can make this for_each loop more readable if we use Lambda. Let's take a look at the following code snippet to examine how we refactor the for_each.cpp file:

    /* lambda_tiny_func.cpp */
#include <vector>
#include <algorithm>
#include <iostream>
#include "../vehicle/vehicle.h"

using namespace std;

auto main() -> int
{
cout << "[lambda_tiny_func.cpp]" << endl;

// Initializing several Vehicle instances
Vehicle car("car", 4);
Vehicle motorcycle("motorcycle", 2);
Vehicle bicycle("bicycle", 2);
Vehicle bus("bus", 6);

// Assigning the preceding Vehicle instances to a vector
vector<Vehicle> vehicles = { car, motorcycle, bicycle, bus };

// Displaying the elements of the vector
// using Lambda expression
cout << "All vehicles:" << endl;
for_each(
begin(vehicles),
end(vehicles),
[](const Vehicle &vehicle){
cout << vehicle.GetType() << endl;
});

return 0;
}

As we can see, we have transformed the PrintOut() function that we used in the for_each.cpp file into a Lambda expression and passed it to the for_each loop. It will indeed give the same output as the for_each.cpp file does. However, now our code becomes more concise and readable.

主站蜘蛛池模板: 莱芜市| 南京市| 财经| 康保县| 长治市| 谢通门县| 明溪县| 连州市| 崇信县| 林西县| 岳普湖县| 长宁县| 平阴县| 高唐县| 兴安盟| 和田市| 岳阳市| 大同市| 文山县| 方正县| 潜江市| 龙岩市| 阿拉尔市| 连江县| 沧州市| 怀宁县| 佛山市| 许昌县| 昭平县| 吴忠市| 宁武县| 环江| 卢龙县| 孟村| 子长县| 子长县| 邵阳县| 岳普湖县| 册亨县| 安岳县| 高安市|