函数指针
c语言学过了,这里简单记一下,下面举例一个用法就行:
#include<iostream>
#include<vector>
template <class T>
void print(T v) {
std::cout << v << std::endl;
}
template <class T1, class Func>
void ForEach(std::vector<T1> &v, Func func) {
for (T1 &value : v) {
func(value);
}
}
int main() {
std::vector<int> v = { 1,1,4,5,1,4 };
ForEach(v,print<int>);
ForEach(v, [](int& a) { a++; });
ForEach(v, print<int>);
return 0;
}
比如这个代码,foreach便利出数据,具体执行什么操作,就可以通过函数指针传入。
Lambda匿名函数
匿名函数结构
[](){}
[]: 捕获
():参数表
{}:里面写函数内容
捕获
捕获可以让函数使用外部的值。
- [] 什么都不捕获
- [&] 引用捕获,可以修改值
- [=] 按值捕获,不可以修改值
例子
int c = 1;
auto y = [=](int a, int b) {
return a + b + c;
};
std::cout << y(1,2) << std::endl;
标签:std,函数,int,捕获,C++,ForEach,函数指针,Lambda From: https://www.cnblogs.com/orzmiku/p/17644234.html因为不需要修改c的值,所以按值捕获。结果是4.