替换_复制
|
|
类别:算法 |
组件类型:函数 |
原型
template <class InputIterator, class OutputIterator, class T>
OutputIterator replace_copy(InputIterator first, InputIterator last,
OutputIterator result, const T& old_value,
const T& new_value);
描述
替换_复制从范围复制元素[first, last)到范围[result, result + (last-first)),与任何元素相等的情况例外old_value未复制;new_value则复制。更确切地说,对于每个整数n相应0 <= n < last-first,
替换_复制执行赋值*(result+n) = new_value如果*(first+n) == old_value,并且*(result+n) = *(first+n)否则。定义
在标准头中定义 algorithm,在非标准向后兼容头 algo.h 中定义。对类型的要求
-
InputIterator是 输入迭代器 的模型。
-
OutputIterator是 输出迭代器 的模型。
-
T是 相等可比较 的,并且可以与对象相比较的相等InputIterator's 值类型。
-
T是 可赋值 的。
-
T可以转换为OutputIterator's 值类型集合中的一种类型。
前置条件
-
[first, last)是一个有效的范围。
- 输出范围中有足够的空间来存储复制的值。即,[result, result + (last-first))是一个有效的范围。
-
result不是范围内的迭代器[first, last).
复杂性
线性。替换_复制执行正好last - first相等比较和正好last - first赋值。示例
vector<int> V1;
V1.push_back(1);
V1.push_back(2);
V1.push_back(3);
V1.push_back(1);
vector<int> V2(4);
replace_copy(V1.begin(), V1.end(), V2.begin(), 1, 99);
assert(V[0] == 99 && V[1] == 2 && V[2] == 3 && V[3] == 99);
说明
另请参阅
copy, replace, replace_if, replace_copy_if
版权所有 © 1999 Silicon Graphics, Inc. 保留所有权利。
TrademarkInformation