📅  最后修改于: 2023-12-03 14:59:45.438000             🧑  作者: Mango
在C++中,STL(Standard Template Library)提供了丰富的算法函数来处理各种容器。其中的 copy_if()
函数用于在源容器中按照指定条件复制元素到目标容器中。
template<class InputIt, class OutputIt, class UnaryPredicate>
OutputIt copy_if(InputIt first, InputIt last, OutputIt d_first, UnaryPredicate pred);
该函数接受 4 个参数:
first
和 last
:表示源容器中元素的范围,即 [first, last)
。d_first
:表示目标容器的起始位置,要从这里开始复制元素。pred
:表示一个一元谓词(Unary Predicate),用于指定复制的条件。只有满足该谓词条件的元素才会被复制到目标容器。返回值为指向目标容器最后一个复制元素的下一个位置的迭代器。
下面是一个示例代码,展示了如何使用 copy_if()
函数将一个 vector 中的偶数复制到另一个 vector 中:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> source = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::vector<int> destination;
std::copy_if(source.begin(), source.end(), std::back_inserter(destination), [](int n){
return n % 2 == 0;
});
for(auto num : destination) {
std::cout << num << " ";
}
return 0;
}
输出结果为:2 4 6 8 10
copy_if()
函数不会改变源容器中的元素,只是将满足条件的元素复制到目标容器中。copy_if()
函数是 C++ STL 中一个非常有用的算法函数,它可以方便地根据指定的条件从源容器中复制元素到目标容器中。我们可以利用该函数快速筛选出符合需求的元素,并进行进一步的处理。