温馨提示×

如何在C++中使用copy_if与lambda表达式结合

c++
小樊
83
2024-09-25 01:29:14
栏目: 编程语言

在 C++ 中,std::copy_if 是一个算法,用于从一个输入范围复制满足特定条件的元素到输出范围

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

int main() {
    // 初始化一个整数向量
    std::vector<int> input = {1, 2, 3, 4, 5, 6, 7, 8, 9};

    // 创建一个新的向量,用于存储满足条件的元素
    std::vector<int> output;

    // 使用 lambda 表达式定义条件:将偶数复制到输出向量中
    auto condition = [](int num) { return num % 2 == 0; };

    // 使用 copy_if 算法将满足条件的元素从输入向量复制到输出向量
    std::copy_if(input.begin(), input.end(), std::back_inserter(output), condition);

    // 输出结果
    std::cout << "Output vector: ";
    for (int num : output) {
        std::cout << num << " ";
    }

    return 0;
}

在这个示例中,我们首先定义了一个输入向量 input,然后创建了一个新的向量 output 用于存储满足条件的元素。接下来,我们定义了一个 lambda 表达式 condition,用于检查一个整数是否为偶数。最后,我们使用 std::copy_if 算法将满足条件的元素从输入向量复制到输出向量,并使用 std::back_inserter 作为目标范围的插入迭代器。运行此程序将输出以下结果:

Output vector: 2 4 6 8

0