当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ std::copy_if()用法及代码示例


C++ STL std::copy_if() 函数

copy_if() 函数是算法头的库函数,用于复制容器的元素,将容器的某些元素(满足给定条件)从给定的开始位置复制到另一个容器从给定的开始位置。

注意:使用 copy_if() 函数 - 包括<algorithm>标题或者您可以简单使用<bits/stdc++.h>头文件。

std::copy_if() 函数的语法

    std::copy_n(
        iterator source_first, 
        iterator source_end, 
        iterator target_start, 
        UnaryPredicate pred);

参数:

  • iterator source_first, iterator source_end- 是源容器的迭代器位置。
  • iterator target_start- 是目标容器的开始迭代器。
  • UnaryPredicate pred- 接受范围内的元素作为参数并返回可转换为 bool 的值的一元函数。

返回值: iterator- 它是指向已复制元素的目标范围末尾的迭代器。

例:

    Input:
    //declaring & initializing an int array
    int arr[] = { 10, 20, 30, 40, 50 };
    
    //vector declaration
    vector<int> v1(5);
    
    //copying 5 array elements to the vector
    copy_n(arr, 5, v1.begin());

    Output:
    //if we print the value
    arr:10 20 30 40 50
    v1:10 20 30 40 50

用于演示 std::copy_if() 函数使用的 C++ STL 程序

在这个例子中,我们只将数组的正元素复制到向量中。

//C++ STL program to demonstrate use of
//std::copy_if() function
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main()
{
    //declaring & initializing an int array
    int arr[] = { 10, 20, 30, -10, -20, 40, 50 };
    //vector declaration
    vector<int> v1(7);

    //copying 5 array elements to the vector
    copy_if(arr, arr + 7, v1.begin(), [](int i) { return (i >= 0); });

    //printing array
    cout << "arr:";
    for (int x:arr)
        cout << x << " ";
    cout << endl;

    //printing vector
    cout << "v1:";
    for (int x:v1)
        cout << x << " ";
    cout << endl;

    return 0;
}

输出

arr:10 20 30 -10 -20 40 50
v1:10 20 30 40 50 0 0

参考:C++ std::copy_if()



相关用法


注:本文由纯净天空筛选整理自 std::copy_if() function with example in C++ STL。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。