C++中的动态数组大小

Dar*_*ide 0 c++ arrays int dynamic sizeof

我正在寻找一种方法来动态设置整数数组的大小取决于传递的参数.例如,这是伪代码:

int MyFunction(int number)
{
  int myarr[amount of digits in number];
}
Run Code Online (Sandbox Code Playgroud)

所以当输入是13456时,那么int array[]大小应该是5.当我不知道大小的常量时,用C++做最快的方法是什么?

Cor*_*mer 5

您无法创建具有运行时大小的数组,必须在编译时知道它.我建议std::vector改为.

一种解决方案是在转换为字符串后对字符进行计数

#include <string>
int MyFunction(int number)
{
    std::vector<int> myarr(std::to_string(number).size());
}
Run Code Online (Sandbox Code Playgroud)

在数学上,您可以使用日志(基数10)来查找数字中的位数.

#include <cmath>
int MyFunction(int number)
{
    int numDigits = static_cast<int>(std::log10(number)) + 1;
    std::vector<int> myarr(numDigits);
}
Run Code Online (Sandbox Code Playgroud)

  • 使用log(10)计算数字中的位数是危险的.考虑非常大的数字和负数.使用div和mod循环遍历数字更安全. (2认同)