C++ 算法 replace() 函数用于将 [first, last) 范围内所有等于 old_value 的值替换为 new_value 值。
此函数检查范围内的每个元素,如果与指定值匹配,则替换它。
用法
template <class ForwardIterator, class T>
void replace (ForwardIterator first, ForwardIterator last,
const T& old_value, const T& new_value);
参数
first:一个前向迭代器,指向元素被替换的范围内的初始位置。
last:一个前向迭代器,指向元素被替换的范围内的最终位置。
old_value:被替换元素的旧值。
new_value:分配给具有旧值的元素的新值。
返回值
空
复杂度
复杂性在 first 和 last 之间的距离上是线性的。它比较每个元素并分配给那些匹配的元素。
数据竞争
范围 [first1, last1) 中的对象被访问并可能被修改。
异常安全
如果任何函数调用赋值或迭代器上的操作抛出异常,则抛出异常。
请注意,无效参数会导致未定义的行为。
例子1
让我们看一个简单的例子来演示 replace() 的使用:
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v = { 3,1,2,1,2 };
replace(v.begin(), v.end(), 1, 10);
for_each(v.begin(), v.end(),
[](int x) { cout << x << ","; });
return 0;
}
输出:
3,10,2,10,2,
在上面的例子中,向量 v 的元素 1 被替换为 10。
例子2
让我们看另一个简单的例子:
#include <vector>
#include <algorithm>
#include <iostream>
int main( ) {
using namespace std;
vector <int> v1;
vector <int>::iterator Iter1;
int i;
for ( i = 0 ; i <= 9 ; i++ )
v1.push_back( i );
int ii;
for ( ii = 0 ; ii <= 3 ; ii++ )
v1.push_back( 7 );
random_shuffle (v1.begin( ), v1.end( ) );
cout << "The original vector v1 is:\n ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")." << endl;
// Replace elements with a value of 7 with a value of 700
replace (v1.begin( ), v1.end( ), 7 , 700);
cout << "The vector v1 with a value 700 replacing that of 7 is:\n ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")." << endl;
return 0;
}
输出:
The original vector v1 is: ( 4 7 7 7 0 5 7 1 6 9 3 7 8 2 ). The vector v1 with a value 700 replacing that of 7 is: ( 4 700 700 700 0 5 700 1 6 9 3 700 8 2 ).
在上面的例子中,replace() 从向量 v1 中找到所有与 7 匹配的元素并将其替换为 700。
例子3
让我们看另一个简单的例子:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void print(vector<int>& v)
{
for(int i = 0; i < v.size(); i++)
cout << v[i] << " ";
cout << endl;
}
int main() {
vector<int> v = {1, 4, 3, 2, 3, 10, 7, 9, 3, 8};
cout << "v:";
print(v);
// replace 3 with 6
replace(v.begin(), v.end(), 3, 6);
cout << "After replacing 3 with 6\n";
cout << "v:";
print(v);
return 0;
}
输出:
v:1 4 3 2 3 10 7 9 3 8 After replacing 3 with 6 v:1 4 6 2 6 10 7 9 6 8
示例 4
让我们看另一个简单的例子:
#include <iostream> // cout
#include <algorithm> // replace
#include <vector> // vector
using namespace std;
int main () {
int myints[] = { 10, 20, 30, 30, 20, 10, 10, 20 };
vector<int> myvector (myints, myints+8); // 10 20 30 30 20 10 10 20
replace (myvector.begin(), myvector.end(), 20, 99); // 10 99 30 30 99 10 10 99
cout << "myvector contains:";
for (vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
cout << ' ' << *it;
cout << '\n';
return 0;
}
输出:
myvector contains:10 99 30 30 99 10 10 99
相关用法
- C++ Algorithm replace_copy()用法及代码示例
- C++ Algorithm replace_copy_if()用法及代码示例
- C++ Algorithm replace_if()用法及代码示例
- C++ Algorithm remove_if()用法及代码示例
- C++ Algorithm remove()用法及代码示例
- C++ Algorithm remove_copy_if()用法及代码示例
- C++ Algorithm reverse_copy()用法及代码示例
- C++ Algorithm remove_copy()用法及代码示例
- C++ Algorithm reverse()用法及代码示例
- C++ Algorithm random_shuffle()用法及代码示例
- C++ Algorithm rotate()用法及代码示例
- C++ Algorithm rotate_copy()用法及代码示例
- C++ Algorithm max_element()用法及代码示例
- C++ Algorithm set_union()用法及代码示例
- C++ Algorithm next_permutation()用法及代码示例
- C++ Algorithm upper_bound()用法及代码示例
- C++ Algorithm minmax()用法及代码示例
- C++ Algorithm pop_heap()用法及代码示例
- C++ Algorithm set_intersection()用法及代码示例
- C++ Algorithm lower_bound()用法及代码示例
注:本文由纯净天空筛选整理自 C++ Algorithm replace()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。