C++ 算法 replace_copy_if() 函数
定义和用法
replace_copy_if() 函数创建一个数据范围的副本,并将其中所有满足指定条件的元素替换为新值。
数据范围通过迭代器指定。
条件由一个谓词函数定义,该函数接收元素值作为参数并返回布尔值(满足条件返回 true,不满足返回 false)。
实例
创建 vector 副本并将包含字母 "o" 的元素替换为 "Toyota":
bool has_o(string item) {
return item.find('o') != string::npos;
}
int main() {
vector<string> cars = {"Volvo", "BMW", "Ford", "Tesla"};
vector<string> newcars(4);
replace_copy_if(cars.begin(), cars.end(), newcars.begin(), has_o, (string)"Toyota");
for (string car : newcars) {
cout << car << "\n";
}
return 0;
}
语法
replace_copy_if(iterator start, iterator end, iterator destination, function condition, <type> replace);
其中 <type> 表示数据范围包含的数据类型。
参数
| 参数 | 描述 |
|---|---|
| start | 必需。指向源数据范围起始位置的迭代器。 |
| end |
必需。指向源数据范围结束位置的迭代器。 将处理到该位置之前的元素。 |
| destination | 必需。指向目标数据范围起始位置的迭代器。 |
| condition | 必需。接收元素值并返回布尔值的谓词函数。 |
| replace | 必需。用于替换满足条件元素的新值。 |
技术细节
| 返回: | 指向目标数据范围末尾的迭代器(最后一个被写入元素的下一个位置)。 |
|---|
说明:
- 原始数据范围保持不变
- 目标数据范围需预先分配足够空间
- 时间复杂度为 O(n),n 为数据范围大小
相关页面
教程:C++ 数据结构
教程:C++ 迭代器
教程:C++ 算法