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

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.

主站蜘蛛池模板: 巴林左旗| 贺州市| 两当县| 麻江县| 广灵县| 南召县| 五指山市| 大悟县| 黄石市| 惠州市| 海门市| 仪征市| 山东省| 沁水县| 彭水| 财经| 兴业县| 泉州市| 尤溪县| 军事| 花垣县| 盐池县| 庆云县| 沭阳县| 扶风县| 渑池县| 卢湾区| 手机| 漳浦县| 米脂县| 安溪县| 玛纳斯县| 咸宁市| 襄樊市| 西乡县| 满洲里市| 华容县| 合阳县| 太原市| 安福县| 万宁市|