【问题标题】:Returning pair from a function in C++?从 C++ 中的函数返回对?
【发布时间】:2018-02-03 19:59:49
【问题描述】:

我是 C++ 初学者,遇到以下问题: 在我的程序中,我有一个函数,我将一个固定大小的数组作为参数传递给它。我遍历它并执行一些操作。结果,我有 2 个变量 - bra,我想从函数中返回它们。我创建了一对并将这些值分配给它。但是,当我运行整个程序时,编译器会抛出错误 - 无法将 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;

}

【问题讨论】:

  • 您声明的函数返回类型应该与实际返回类型匹配
  • 你声明你的 sumaf 函数返回一个 double 而不是 std::pair

标签: c++ function return std-pair


【解决方案1】:

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

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

#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);
}

【讨论】:

    猜你喜欢
    • 2021-08-09
    • 2014-07-18
    • 2014-05-15
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 2016-08-28
    • 2011-03-26
    • 2015-03-09
    相关资源
    最近更新 更多