首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

std:transform用法小弟我改了一下,结果就出错了

2012-03-09 
std::transform用法我改了一下,结果就出错了功能实现:vecotr1 一个向量里存着若干对象,对象有个成员:valst

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期望的结果吗?

热点排行