transform的字面意思就是变换的意思。那这个算法有什么用呢?
当你想要对一个数据序列进行变换(转换大小写,交数组的值加倍等),对于一个序列中的元素的任意复杂的变换,最理想的选择是采用标准算法transform
EXAMPLE
#include <algorithm>
#include <iostream>
#include <istream>
#include <ostream>
#include <vector>
#include <iterator>
int times_two(int i) //变换函数
{
return i*2;
}
int main()
{
std::vector<int> data;
//从标准输入读入
std::copy(std::istream_iterator<int>(std::cin),std::istream_iterator<int>(),std::back_inserter(data));
//进行变换
std::transform(data.begin(),data.end(),data.begin(),times_two);
//复制到标准输出
std::copy(data.begin(),data.end(),std::ostream_iterator<int>(std::cout,"\n"));
}
POSSIBLE OUTPUT
transform有四个形参,第一个是需要转换序列的起始,第二个是需要转换序列的末尾,第三个是转换后存放容器的起始处,第四个是变换函数。
最生要的是这的第四个参数,它是一个函数名,但该函数名必须在源件中声明或都定义,也就是说变换函数是自己定义的。