从C+中的函数返回对+;? 我是C++初学者,我面临以下问题: 在我的程序中,我有一个函数,我将一个固定大小的数组作为参数传递给它。我遍历它并执行一些操作。因此,我有两个变量-br和a,我想从函数中返回它们。我创建一对,并将这些值赋给它。但是,当我运行整个程序时,编译器会抛出一个错误-无法将std::pair转换为int。我想问一下为什么会发生这种情况 #include <utility> using namespace std; pair <double,double> rez; //int main() ... double sumaf(int k[20]) { for(int i=0; i<20; i++) { if(k[i]>0 && k[i]%3==0) { a+=k[i]; br++; } } rez.first=a; rez.second=br; return rez; } #包括 使用名称空间std; 对雷兹; //int main()。。。 双集水坑(整块k[20]) { 对于(int i=0;i0&&k[i]%3==0) { a+=k[i]; br++; } } rez.first=a; rez.second=br; 返回rez; }

从C+中的函数返回对+;? 我是C++初学者,我面临以下问题: 在我的程序中,我有一个函数,我将一个固定大小的数组作为参数传递给它。我遍历它并执行一些操作。因此,我有两个变量-br和a,我想从函数中返回它们。我创建一对,并将这些值赋给它。但是,当我运行整个程序时,编译器会抛出一个错误-无法将std::pair转换为int。我想问一下为什么会发生这种情况 #include <utility> using namespace std; pair <double,double> rez; //int main() ... double sumaf(int k[20]) { for(int i=0; i<20; i++) { if(k[i]>0 && k[i]%3==0) { a+=k[i]; br++; } } rez.first=a; rez.second=br; return rez; } #包括 使用名称空间std; 对雷兹; //int main()。。。 双集水坑(整块k[20]) { 对于(int i=0;i0&&k[i]%3==0) { a+=k[i]; br++; } } rez.first=a; rez.second=br; 返回rez; },c++,function,return,std-pair,C++,Function,Return,Std Pair,您需要更改sumaf()的返回类型。 此外,不需要全局变量(rez) #包括 使用名称空间std; 双人围网(整数k[20]) { 双a=0, br=0; 对于(int i=0;i0&&k[i]%3==0) { a+=k[i]; br++; } } 返回make_对(a,br); } 请提供一个。您声明的函数返回类型应与实际返回类型相匹配。您正在声明sumaf函数以返回double而不是std::pair #include <utility> using namespace std

您需要更改
sumaf()的返回类型。

此外,不需要全局变量(
rez

#包括
使用名称空间std;
双人围网(整数k[20])
{
双a=0,
br=0;
对于(int i=0;i<20;i++)
{
如果(k[i]>0&&k[i]%3==0)
{
a+=k[i];
br++;
}
}
返回make_对(a,br);
}

请提供一个。您声明的函数返回类型应与实际返回类型相匹配。您正在声明sumaf函数以返回double而不是std::pair
#include <utility>

using namespace std;

pair<double, double> sumaf(int k[20])
{
    double a = 0,
           br = 0;
    for(int i = 0; i < 20; i++)
    {
        if (k[i] > 0 && k[i] % 3 == 0)
        {
            a += k[i];
            br++;
        }
    }
    return make_pair(a, br);
}