Функция replace_if
Функция replace_if заменяет все элементы
в диапазоне, для которых предикат возвращает
true, на новое значение. Первым параметром
функция принимает итератор начала диапазона,
вторым - итератор конца диапазона, третьим -
унарный предикат, а четвёртым - новое значение,
которым следует заменить подходящие элементы.
Синтаксис
replace_if(first, last, pred, new_value)
Пример
Давайте заменим все чётные числа в векторе
на число 0:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
replace_if(vec.begin(), vec.end(),
[](int x) { return x % 2 == 0; }, 0);
for (int x : vec) {
cout << x << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 0 3 0 5
Пример
Давайте заменим все символы 'a' в строке
на символ 'x':
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string str = "abcde";
replace_if(str.begin(), str.end(),
[](char c) { return c == 'a'; }, 'x');
cout << str << endl;
return 0;
}
Результат выполнения кода:
"xbcde"
Пример
Давайте заменим все числа, большие 3,
в векторе на число 9:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
replace_if(vec.begin(), vec.end(),
[](int x) { return x > 3; }, 9);
for (int x : vec) {
cout << x << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3 9 9