如何在c ++中使用数组返回类型的函数?
例如,考虑这个计算数字除数的简单函数,在for循环i
的每一步都有一个新值。
int divisorDeterminer(int num)
{
int i = 0 ;
for (i; i < num; i++)
{
if (num % i == 0)
{
return i;
}
}
}
我想将除数作为数组,但我不知道怎么做?
答案 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;
}