MST

星途 面试题库

面试题:C++ Lambda表达式在STL算法中的应用

假设有一个`std::vector<int>`,包含一些整数。请使用C++ Lambda表达式结合`std::find_if`算法,找出第一个大于10的元素,并返回其迭代器。同时说明为什么在这种场景下使用Lambda表达式比普通函数更合适。
31.0万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec = {5, 8, 12, 15, 20};

    auto it = std::find_if(vec.begin(), vec.end(), [](int num) { return num > 10; });

    if (it != vec.end()) {
        std::cout << "第一个大于10的元素是: " << *it << std::endl;
    } else {
        std::cout << "没有找到大于10的元素" << std::endl;
    }

    return 0;
}

在这种场景下使用Lambda表达式比普通函数更合适的原因如下:

  • 简洁性:Lambda表达式可以直接在使用的地方定义,无需在代码其他位置专门定义一个普通函数,使代码更加紧凑,阅读起来更直观。
  • 作用域灵活性:Lambda表达式可以直接捕获其所在作用域中的变量,而普通函数要实现同样功能则需要通过参数传递等方式来获取外部变量,相对繁琐。在这个例子中,如果后续有对外部变量的依赖,Lambda表达式处理起来会更方便。