std::transform用法我改了一下,结果就出错了
功能实现:
vecotr1 一个向量里存着若干对象,
对象有个成员:val
std::transform函数 的第四个参数是一个函数,
这个函数的功能是:求解val的平方
对容器1的每一个对象求解平方,求解后std::back_inserter到vector2中。
所以用到了std::transform(容器1.begin(),容器2.end(), std::back_inserter(容器2), 求解平方的函数)
具体看代码吧
- C/C++ code
#include"stdafx.h"#include<iostream>#include <vector>#include<string>#include<algorithm>#include<list>#include<set>class Studen;void Print( Studen const & obj);int Sqeue( Studen const & obj);class Studen{ std::string name; unsigned age; int val;public: Studen(int nVal, int nAge=0,std::string const &strName=""):val(nVal),age(nAge),name(strName){} ~Studen(){} friend void Print( Studen const & obj); friend int Sqeue( Studen const & obj);};void Print( Studen const & obj){ std::cout<<obj.name<<" "<<obj.age<<" "<<obj.val<<std::endl;}int Sqeue(Studen const & obj){ return (obj.val)*(obj.val);}int main(){ std::vector<Studen> coll,coll2; int i=1; int const count=4; Studen arr[count]={Studen(23,12,"xx"),Studen(3,34,"hello"),Studen(5,134,"kitty"),Studen(8,54,"csdn")}; for(i=0;i<count;i++) { coll.push_back(arr[i]); } std::for_each(coll.begin(),coll.end(), Print); std::transform(coll2.begin(), coll2.end(),std::back_inserter(coll2),Sqeue); std::for_each(coll2.begin(),coll2.end(), Print); return 0;}coll2没打印出来。。。。。 原因肯定是我的 求解平方函数类型错误了。。。
但是我确实需要返回一个 int啊
[解决办法]
编译并运行了一下LZ程序,结果如下:
xx 12 23
hello 34 3
kitty 134 5
csdn 54 8
这是LZ期望的结果吗?