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


C++ std::replace_copy_if()用法及代碼示例


C++ STL std::replace_copy_if() 函數

replace_copy_if()函數是算法頭的庫函數,用於替換給定範圍內的值,並用替換值複製結果序列中的元素,接受序列的範圍[開始,結束],結果的開始位置序列,一元函數(將用於驗證元素)和新值,它將通過一元函數中應用的測試用例(即如果函數返回true)的所有元素替換為範圍中的 new_value 並複製範圍到結果序列的開頭。

注意:使用 replace_copy_if() 函數 - 包括<algorithm>標題或者您可以簡單使用<bits/stdc++.h>頭文件。

std::replace_copy_if() 函數的語法

    std::replace_copy_if(
        iterator start, 
        iterator end, 
        iterator start_result, 
        unary_function, 
        const T& new_value);

參數:

  • iterator start, iterator end- 這些是指向容器中開始和結束位置的迭代器,我們必須在那裏運行替換操作。
  • iterator start_result- 是結果序列的開始迭代器。
  • unary_function- 是一個一元函數,將對給定範圍內的所有元素執行條件檢查,通過條件的元素將被替換。
  • new_value- 要分配的值而不是 old_value。

返回值: iterator- 它返回一個迭代器,指向寫入結果序列的最後一個元素之後的元素。

例:

    //function to test EVEN numbers
    bool isEVEN(int x){
        if (x % 2 == 0) return 1;
        else    return 0;
    }

    Input:
    //an array (source)
    int arr[] = { 10, 11, 12, 13, 14, 15, 100, 200, 300 };
    
    //declaring a vector (result sequence)
    vector<int> v(6);
    
    //copying 6 elements of array to vector
    //by replacing 10 to -1
    replace_copy_if(arr + 0, arr + 6, v.begin(), isEVEN, -1);
    
    Output:
    vector (v):-1 11 -1 13 -1 15

用於演示 std::replace_copy_if() 函數使用的 C++ STL 程序

在這個程序中,我們有一個數組,我們通過用 -1 替換所有 EVEN 元素來將它的 6 個元素複製到一個向量中。

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

//function to test EVEN numbers
bool isEVEN(int x)
{
    if (x % 2 == 0)
        return 1;
    else
        return 0;
}

//main code
int main()
{
    //an array
    int arr[] = { 10, 11, 12, 13, 14, 15, 100, 200, 300 };

    //declaring a vector
    vector<int> v(6);

    //printing  elements
    cout << "before replacing, Array (arr):";
    for (int x:arr)
        cout << x << " ";
    cout << endl;

    cout << "vector (v):";
    for (int x:v)
        cout << x << " ";
    cout << endl;

    //copying 6 elements of array to vector
    //by replacing 10 to -1
    replace_copy_if(arr + 0, arr + 6, v.begin(), isEVEN, -1);

    //printing vector elements
    cout << "after replacing, Array (arr):";
    for (int x:arr)
        cout << x << " ";
    cout << endl;

    cout << "vector (v):";
    for (int x:v)
        cout << x << " ";
    cout << endl;

    return 0;
}

輸出

before replacing, Array (arr):10 11 12 13 14 15 100 200 300
vector (v):0 0 0 0 0 0
after replacing, Array (arr):10 11 12 13 14 15 100 200 300
vector (v):-1 11 -1 13 -1 15

參考:C++ std::replace_copy_if()



相關用法


注:本文由純淨天空篩選整理自 std::replace_copy_if() function with example in C++ STL。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。