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()
相关用法
- C++ std::replace_copy()用法及代码示例
- C++ std::replace_if()用法及代码示例
- C++ std::replace()用法及代码示例
- C++ std::reverse()用法及代码示例
- C++ std::remove_cv用法及代码示例
- C++ std::remove_const用法及代码示例
- C++ std::remove_volatile用法及代码示例
- C++ std::reverse_copy用法及代码示例
- C++ std::rank用法及代码示例
- C++ std::rotate_copy()用法及代码示例
- C++ std::rotate()用法及代码示例
- C++ std::max()用法及代码示例
- C++ std::string::push_back()用法及代码示例
- C++ std::less_equal用法及代码示例
- C++ std::is_member_object_pointer模板用法及代码示例
- C++ std::copy_n()用法及代码示例
- C++ std::string::insert()用法及代码示例
- C++ std::is_sorted_until用法及代码示例
- C++ std::iota用法及代码示例
- C++ std::numeric_limits::digits用法及代码示例
注:本文由纯净天空筛选整理自 std::replace_copy_if() function with example in C++ STL。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。