C++ 算法 replace_if() 函数

定义和用法

replace_if() 函数将数据范围内所有满足指定条件的元素替换为另一个值。

数据范围由迭代器指定。

条件由一个函数指定,该函数接收元素的值作为参数,并返回一个布尔值(若条件满足则返回 1,否则返回 0)。

提示:若希望不修改原数据范围,而是创建一个新的数据范围,可以使用 replace_copy_if() 函数。

实例

将包含字母 "o" 的汽车品牌替换为 "Toyota":

bool has_o(string item) {
  return item.find('o') != string::npos;
}

int main() {
  vector<string> cars = {"Volvo", "BMW", "Ford", "Tesla"};
  replace_if(cars.begin(), cars.end(), has_o, (string)"Toyota");
  for (string car : cars) {
    cout << car << "\n";
  }

  return 0;
}

亲自试一试

语法

replace_if(iterator start, iterator end, function condition, <type> replace);
<type> 表示数据范围所包含的元素类型。

参数

参数 描述
start 必需。指向数据范围起始位置的迭代器。
end 必需。指向数据范围结束位置的迭代器(包含该位置之前的元素,但不包含该位置的元素)。
condition 必需。函数,接收数据范围内的元素值作为参数,并返回布尔值。
replace 必需。替换值。

相关页面

教程:C++ 数据结构

教程:C++ 迭代器

教程:C++ 算法