c++仿函数 最后的输出没有发挥它的作用 怎么改呢


//在一个vector容器sourceVec中加入10个随机整数;
//设计一个名为squareTrans的仿函数,利用transform算法将10个数的平方搬运到目标容器targetVec中;
//再设计一个仿函数display,利用for_each算法将targetVec中的10个数输出到屏幕上。
#include<bits/stdc++.h>
using namespace std;
template<typename T>
T squareTrans(T x)
{
    return x*x;
}
template<typename T>
class display
{
    public:
        void operator()(T val)
        {
            cout<<val<<" ";
        }
};
int main()
{    
    int a[24];
    srand((unsigned)time(NULL));
    vector<int> sourceVec;
    vector<int> targetVec;
    for(int i=0;i<10;i++)
    {
        a[i]=rand()%100;
        sourceVec.push_back(a[i]); 
    }
    for_each(sourceVec.begin(),sourceVec.end(),display<int>());
    std::transform(sourceVec.begin(),sourceVec.end(),targetVec.begin(),squareTrans<int>);
    for_each(targetVec.begin(),targetVec.end(),display<int>());//这个语句没有发挥它的作用捏 
} 

c++stl 仿函数 最后的输出没有发挥它的作用 怎么改呢

好像不用括号吧,没试过!这种情况直接使用lambda表达式更方便

targetVec.begin() //targeVec 为空所以调用begin(),必然出错
把targetVect 的定义改为

```c++

vector targetVec(10)

```;

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632