c++

lamda表达式与find_if

c++

Posted by YiMiTuMi on September 20, 2023

lamda表达式

lamda语法

[捕获列表](参数){ 逻辑语句 }

如:

int a = 6;
[a](int x, int y){ return x + y + a; }

lamda表达式与find_if

find_if函数 带条件的查找元素,可以通过find_if函数来实现查找满足特定条件的元素,将lamda表达式作为查找条件。

例:用find_if去查找vector中保存符合条件结构体的值

typedef struct _LAMBDA_TEST
{
	int a;
	int b;

} LAMBDA_TEST, * PLAMBDA_TEST;

void LambdaAndFindIfTest()
{
	int iTest = 6;
	std::vector<LAMBDA_TEST> vecLamebda = { {7, 8}, {9, 20}, {5, 9} };

	std::vector<LAMBDA_TEST>::iterator iter = std::find_if(vecLamebda.begin(), vecLamebda.end(), [iTest](LAMBDA_TEST lambdaTest)
	{
		return lambdaTest.a < iTest && lambdaTest.b > iTest;  //返回是否符合条件
	}
	);

	if (iter != vecLamebda.end())
	{
		//找到了
		std::cout << iter->a << iter->b << std::endl;

	}
}

不然的话,可能要循环vector一个个比较。