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


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


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

replace_if() 函數是算法頭的庫函數,用於根據給定的一元函數替換給定範圍內的值,該函數應接受範圍內的元素作為參數並返回應可轉換為 bool 的值(如0 或 1),它返回的值表示給定的元素是否可以被替換?

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

std::replace_if() 函數的語法

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

參數:

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

返回值: void- 它返回注意。

例:(替換偶數)

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

    Input:
    vector<int> v{ 10, 20, 33, 23, 11, 40, 50 };
    
    //replacing all EVEN elements with -1
    replace_if(v.begin(), v.end(), isEVEN, -1);
    
    Output:
    -1 -1 33 23 11 -1 -1

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

在這個程序中,我們有一個向量並用 -1 替換所有偶數。

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

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

int main()
{
    //vector
    vector<int> v{ 10, 20, 33, 23, 11, 40, 50 };

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

    //replacing all EVEN elements with -1
    replace_if(v.begin(), v.end(), isEVEN, -1);

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

    return 0;
}

輸出

before replacing, v:10 20 33 23 11 40 50
after replacing, v:-1 -1 33 23 11 -1 -1

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



相關用法


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