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

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.

主站蜘蛛池模板: 抚松县| 惠水县| 藁城市| 凉山| 高平市| 封丘县| 巴南区| 麻江县| 麻江县| 海丰县| 灵山县| 南乐县| 岳阳市| 隆安县| 兴宁市| 焦作市| 盘山县| 北川| 广西| 淮安市| 通城县| 济宁市| 万荣县| 正宁县| 遂平县| 黄石市| 衡水市| 西华县| 于田县| 潮州市| 交城县| 沾化县| 宽城| 罗江县| 北流市| 宝坻区| 滨海县| 汝阳县| 防城港市| 秀山| 进贤县|