返回多个整数时的合适函数类型

Suitable type of function when more than one integer is returned

本文关键字:函数 类型 整数 返回      更新时间:2023-10-16

如何在 c++ 中拥有一个数组返回类型的函数?

例如,考虑这个计算数字除数的简单函数,在 for 循环的每一步中i都有一个新值。

int divisorDeterminer(int num) 
{
int i = 0 ;
for (i; i < num; i++) 
{
if (num % i == 0) 
{
return i;
}
}
}

我想把除数作为一个数组,但我不知道怎么做?

std::array是一个东西,如果你知道它在编译时将包含多少个项目。 在您的情况下,项目的数量会有所不同,因此std::vector会起作用。 标准库中有各种容器;值得一读,但std::vector通常是首选数据类型。

std::vector<int> divisorDeterminer(int num) 
{
std::vector<int> divisors;
for (int i=1; i < num; i++) //<--- start at 1, not 0
{
if (num % i == 0) 
{
divisors.push_back(i);
}
}
return divisors;
}

编辑: 原始代码从i=0检查,但 0 应该算作任何东西的除数吗?应该不会。正如这个问题中所讨论的,它也误入了未定义的行为 (UB),所以我从 1 开始循环。

您需要从1迭代到num/2才能获得所有除数的列表。

#include <vector>
using namespace std;
std::vector<int> divisorDeterminer(int num) 
{
std::vector<int> divisors;
for (int i=1; i <= num/2 ; i++) 
{
if (num % i == 0) 
{
divisors.push_back(i);
}
}
return divisors;
}