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), 求解平方的函数)



具体看代码吧 


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