C ++在Array中返回两个值

时间:2014-02-18 05:07:30

标签: c++ arrays

我差不多完成了我的代码;但是,有一部分效果不佳。简单地说,从只包含数字的文件中读取(例如出售的汽车)。通过使用数组,尝试获取这些数字的总和,最大值和最大索引的数量。我的问题是:如何从MaxSold函数中返回两个值?它只返回添加到索引的最大值,这是不正确的。结果应该指向员工编号,然后是最大值。 到目前为止,这是我的代码:

#include <iostream>
#include <fstream>
/*#include <vector>
#include <iomanip>*/
void Read(int arryList[], int size);
void Print(int arryList[], int size);
int total(int arryList[], int size);
int MaxSold(int arryList[], int size, int& number);
using namespace std;
ifstream inFile("C:\\cars.dat");
int main()
 {
 int cars[7];
 int i;
Read(cars,7);
Print(cars,7);
cout<<"The total of sold cars is: "<<total(cars, 7)<< "\n";
cout<<"The Max "<< MaxSold(cars, 7, i);
 }
  void Read(int arryList[], int size){
    for(int i = 0; i < 7; i++)
{
    inFile >> arryList[i];

}
return;
}
void Print(int arryList[], int size){
for (int i = 0; i < 7; i++){

    cout  << i + 1 << "-"<< arryList[i] << "\n";

}
return ;
 }

 int total(int arryList[], int size){
 int sum = 0;
  for (int i = 0; i < size; i++){


 sum +=arryList[i];

 }
 return sum;
 }
  int MaxSold(int arryList[], int size, int& number){
  int Maximum= 0;
  int relate=0;
  for( int i=0 ; i<7 ; i++){

   if (arryList[i] > Maximum){
    Maximum = arryList[i];
    relate = i+1;
   }
  }
  return Maximum, relate;
 }

2 个答案:

答案 0 :(得分:1)

使用std::pair

#include<utility>
//..
std::pair<int,int>  MaxSold(int arryList[], int size, int& number)
{
    //...
    return std::make_pair( Maximum, relate );
}

然后,

std::pair<int,int> p = MaxSold(cars, 7, i) ; 

std::cout<< p.first ;  //maximum
std::cout<< p.second ; //relate

答案 1 :(得分:1)

您无法从函数返回多个值。当然,该值可以是多个值的容器。它可以是您自己的自定义类型,但最简单的方法是返回std::pair<int,int>

std::pair<int, int> MaxSold(int arryList[], int size, int& number)
{
    // ...
    return std::make_pair(Maximum, relate);
}