當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。