算法transform()提供两种能力
1.第一形式有4个参数。把源区间的元素转换到目标区间(转换的意思包含了复制和修改)
2.第二形式有5个参数,将前两个源序列中的元素合并,并将结果写入目标区间
转换元素
OutputIterator transform(InputIterator sourceBeg,InputIterator sourceEnd,
OutputIterator destBeg,UnaryFunc op)
- 针对源区间[sourceBeg,sourceEnd)中的每一个元素调用:op(elem),并将结果写到以destBeg起始的目标区间内
- 返回目标区间内“最后一个被转换元素”的下一位置,也就是第一个未被覆盖的元素的位置
- 调用者必须确保目标区间有足够空间,否则就必须使用插入型迭代器
- sourceBeg与destBeg可以相同,所以可以使用这个算法来变动某一序列内的元素
#include "algostuff.h"
using namespace std;
int main()
{
vector<int> col1;
list<int> col2;
INSERT_ELEMENTS(col1, 1, 9);
PRINT_ELEMENTS(col1, "col1: ");
//negate all elements in col1
transform(col1.begin(), col1.end(), col1.begin(), negate<int>());
PRINT_ELEMENTS(col1, "negate col1: ");
//transform elements of col1 into col2 with 10 times their value
transform(col1.be

transform函数是C++标准库中用于元素转换的算法,它可以对输入序列的元素应用特定操作并将其结果存储在目标序列中。文章展示了transform如何用于改变序列元素(如取反、乘以常数)、结合两个序列的元素(如相加、相乘),并强调了需要确保目标序列有足够的空间。示例代码中使用了标准库的函数对象和bind2nd进行操作。
最低0.47元/天 解锁文章
354

被折叠的 条评论
为什么被折叠?



