📜  C++ STL-algorithm.copy_if()函数(1)

📅  最后修改于: 2023-12-03 14:59:45.438000             🧑  作者: Mango

C++ STL-algorithm.copy_if()函数

简介

在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 个参数:

  • firstlast:表示源容器中元素的范围,即 [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 中一个非常有用的算法函数,它可以方便地根据指定的条件从源容器中复制元素到目标容器中。我们可以利用该函数快速筛选出符合需求的元素,并进行进一步的处理。