返回多个整数时的合适函数类型
Suitable type of function when more than one integer is returned
如何在 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;
}
相关文章:
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 来自 DLL 的函数调用 [表观调用的括号前面的表达式必须具有(指向-)函数类型]
- 是否有任何建议来统一函数类型限定符并简化可恶的函数类型?
- 关于 C++ 中的函数类型定义
- 用于检测函数类型是否为否的特征
- 函数类型参数的模板参数推导
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- C++无效的函数类型转换
- STL 函数和函数类型与函数指针类型
- 如何将result_of与函数类型定义一起使用
- 将模板(没有规范)传递给 std::thread() 会出现错误:<未解析的重载函数类型>匹配错误
- C++ 编译错误:gnu_printf是无法识别的格式函数类型
- 专门用于"direct"函数类型(与函数指针类型相对)
- 将函数类型作为模板参数传递不会编译
- 通过参数传递 lambda(无函数类型模板)
- 如何在模板参数中分离函数类型返回类型和参数
- 为什么比较函数类型需要指定为模板参数?
- 带有限定符的函数类型定义用例
- 如何声明对函数类型的常量引用
- 非类型模板参数允许各种函数类型?