std::transform
场景:std:transform用法小弟我改了一下,结果就出错了
std::transform用法我改了一下,结果就出错了
功能实现:
vecotr1 一个向量里存着若干对象,
对象有个成员:val
std::transform函数 的第四个参数是一个函数,
这个函数的功能是:求解val的平方
对容器1的每一个对象求解平方,求解后std::back_inserter到vector2中。
所以用到了std::transform(容器1.begin(),容器2.end(), std::back_inserter(容器2), 求解平方的函数)
具体看代码吧
coll2没打印出来。。。。。 原因肯定是我的 求解平方函数类型错误了。。。
但是我确实需要返回一个 int啊
------解决方案--------------------
编译并运行了一下LZ程序,结果如下:
xx 12 23
hello 34 3
kitty 134 5
**** 54 8
这是LZ期望的结果吗?
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,"****")}; 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
**** 54 8
这是LZ期望的结果吗?