【问题标题】:How do I create a dynamic array with real numbers?如何创建具有实数的动态数组?
【发布时间】:2021-05-28 01:14:39
【问题描述】:

我知道带有整数的动态数组的语法,但是当我尝试创建一个存储双精度值的动态数组时,它给了我一条错误消息。 (error: expression in new-declarator must have integral or enumeration type)

ifstream f("date.in");
ofstream g("date.out");
double n;
f >> n;
double* v = new double[n];

for(int i=0; i<n; i++)
    f >> v[i];

我经常这样做

int n;
f >> n;
int* v = new int[n];

它有效。

【问题讨论】:

  • 矢量是更好的方式
  • 所以使用声明为双精度的 v[1000] 来代替?
  • 即使数组存储 doubles,它存储的元素数量仍然是一个离散值。 double n; 应该是 int n;size_t n; 或类似的。

标签: c++ arrays dynamic


【解决方案1】:

正如错误信息所暗示的,double n; 不能用作元素的数量,它必须是整数。应该是int n;

【讨论】:

  • 是的,我并没有真正考虑到这一点,是吗? :))
【解决方案2】:

你也可以使用 std::vector:

int main()
{
  ifstream f("date.in");
  ofstream g("date.out");
  
  size_t fSize;
  f >> fSize;
  std::vector<double> v(fSize);

  for(size_t i=0; i<n && f.good(); i++) f >> v[i];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-19
    • 2019-12-18
    • 2011-10-20
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    相关资源
    最近更新 更多