c++11 lambda 我想求10个随机数的平方和 中间那一点不会写的 怎么写呢

c++11 lambda 我想求10个随机数的平方和 中间那一点不会写的 怎么写呢

#include <bits/stdc++.h>
using namespace std;
void myPrintf(int val)
{
    cout << val << " ";
}
int main()
{
    int a[24];
    vector<int> sourceVector;
    sourceVector.resize(10);
    srand((unsigned)time(NULL));
    for(int i=0;i<10;i++)
    {
        a[i]=rand()%100;
        sourceVector.push_back(a[i]); 
    }
//    int res=0;
//    generate(sourceVector.begin(), sourceVector.end(), [&res](int x) {
//        res=x*x;
//        return res;
//    });
    for_each(sourceVector.begin(), sourceVector.end(), myPrintf);
    cout << endl;
}


遍历每次平方加到res里,之后输出

img

    #include <bits/stdc++.h>
    using namespace std;
    void myPrintf(int val)
    {
        cout << val << " ";
    }
    int main()
    {
        int a[24];
        vector<int> sourceVector;
        sourceVector.resize(10);
        srand((unsigned)time(NULL));
        for(int i=0;i<10;i++)
        {
            a[i]=rand()%100;
            sourceVector.push_back(a[i]);
        }
        int res=0;
         vector<int>::iterator i1;
        for (i1 = sourceVector.begin(); i1 != sourceVector.end(); ++i1) {
           res+=*i1**i1;
        }
        cout<<res<<endl;
        for_each(sourceVector.begin(), sourceVector.end(), myPrintf);
        cout << endl;
    }



有些编译器不支持lambda表达式的,你需要先搜索一下你的编译器是否支持,否则会一直报错,使用lambda表达式的写法如下:


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

可以这样写

#include
#include
#include
#include
#include
#include
#include
using namespace std;

int main()
{
int sum;

for(int i=1;i<=10;i++)
{
int a=rand();
sum+=a*a;


}
printf("%d \n",i,sum);
}

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