📜  C++中的std :: replace和std :: replace_if(1)

📅  最后修改于: 2023-12-03 15:29:54.015000             🧑  作者: Mango

C++中的std::replace和std::replace_if

在C++中,std::replace和std::replace_if是两个用于替换容器中元素的函数。它们都定义在头文件中,可以操作各种STL容器,比如vector,list和string等。这两个函数最常用的场景是将容器中某个值替换成另一个值或根据某个条件对容器中的元素进行替换。

std::replace
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 
std::replace_if
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中用于替换容器中元素的两个函数。它们分别可以根据某个值或某个条件去替换容器中的元素。在实际开发中,我们可以根据自己的需求来选择使用哪个函数。