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

时间:2017-03-28 10:34:14

标签: c++

如何在c ++中使用数组返回类型的函数?

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

int divisorDeterminer(int num) 
{
    int i = 0 ;

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

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

2 个答案:

答案 0 :(得分:2)

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),如this question中所述,所以我从1开始循环。

答案 1 :(得分:0)

您需要从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;
}