📅  最后修改于: 2023-12-03 15:29:54.015000             🧑  作者: Mango
在C++中,std::replace和std::replace_if是两个用于替换容器中元素的函数。它们都定义在
template< class ForwardIt, class T >
void replace( ForwardIt first, ForwardIt last, const T& old_value, const T& new_value );
std::replace函数可以将容器中所有等于old_value的元素替换成new_value。其中,first和last分别是容器的起始迭代器和终止迭代器。old_value和new_value分别代表要替换的值和替换后的新值。
下面是一个简单的示例,用std::replace函数将vector中的所有2换成7:
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> vec{1, 2, 3, 2, 4, 2, 5};
std::replace(vec.begin(), vec.end(), 2, 7);
for (auto& num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
输出结果:
1 7 3 7 4 7 5
template< class ForwardIt, class UnaryPredicate, class T >
void replace_if( ForwardIt first, ForwardIt last, UnaryPredicate p, const T& new_value );
std::replace_if函数可以根据某个条件对容器中的元素进行替换。其中,第一个参数和第二个参数用法与std::replace相同。p是一个函数或函数对象,用于判断哪些元素需要被替换。new_value是要替换成的新值。
下面是一个示例,用std::replace_if函数将vector中大于3的元素都替换成8:
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> vec{1, 2, 3, 4, 5, 6};
std::replace_if(vec.begin(), vec.end(), [](int x) { return x > 3; }, 8);
for (auto& num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
输出结果:
1 2 3 8 8 8
std::replace和std::replace_if是STL中用于替换容器中元素的两个函数。它们分别可以根据某个值或某个条件去替换容器中的元素。在实际开发中,我们可以根据自己的需求来选择使用哪个函数。