C++ lambda表达式的几个例子
  FnrD2XWlpoQk 2023年11月02日 56 0


统计一个vector中奇偶数的个数:

lambda做法:这样就避免了再多定义统计函数,简洁了不少

template<typename U>    //要使用模板,因为返回值可能会多样
int Counter(vector<int>& numberVec, U filter) {
	int count = 0;
	for (auto& x : numberVec) {
		if (filter(x) == 1) {
			count++;
		}
	}
	return count;
}
//过滤函数的使用 奇数


//统计函数
int CountOdds(vector<int>& numberVec) {
	return Counter(numberVec, [](int x) {return x % 2 != 0; });
}

int CountEvens(vector<int>& numberVec) {
	return Counter(numberVec, [](int x) {return x % 2 == 0; });
}

统计vector中大于某个数的数的个数:

template<typename U>
int GreatCounter(vector<int>& numberVec, U filter) {
	int count = 0;
	for (auto& x : numberVec) {
		if (filter(x) == 1) {
			count++;
		}
	}
	return count;
}
	

int counterGreater(vector<int>& numberVec, int y) {
	return GreatCounter(numberVec, [=](int x) {return x > y; });    //返回的是bool类型
}

把A中的数值倒序排序后复制到B中

template<typename U>   //遍历处理函数
void travers(vector<int>& numberVec, U process) {
	for (auto& x : numberVec) {
		process(x);
	}
}

void theCopyFunction(vector<int>& a,vector<int>& b, int y) {
	
	travers(a, [&, y](int x) {
		if (x > y) {
			b.push_back(x);
		 }
	}
	);
}

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  FnrD2XWlpoQk   2023年11月02日   57   0   0 倒序
FnrD2XWlpoQk