函数指针

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;

因为不需要修改c的值,所以按值捕获。结果是4.

最后修改:2023 年 05 月 10 日
如果觉得我的文章对你有用,请随意赞赏