std::copy_if
std::copy_if 是 C++ 标准库 头文件中的一个函数模板,用于从一个源范围中,根据指定条件(谓词)筛选元素,并将满足条件的元素复制到目标范围。
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator> // std::back_inserterint main() {std::vector<int> source = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};std::vector<int> even_numbers; // 存放偶数// 使用 Lambda 表达式作为谓词:筛选出偶数std::copy_if(source.begin(), source.end(),std::back_inserter(even_numbers), // 使用 back_inserter 自动增长[](int n) { return n % 2 == 0; });std::cout << "Even numbers: ";for (int n : even_numbers) {std::cout << n << ' ';}std::cout << '\n';return 0;
}
结果:
Even numbers: 2 4 6 8 10