繁体   English   中英

是否可以输入到 const double 数组?

[英]Is it possible to input to a const double array?

const double* constArr = new const double [];
for(int i =0;i<n;i++)
cin >>constArr[i];

类似的东西? 是否可以输入到 const double 数组?

最干净的解决方案是使用工厂函数将元素添加到非常量容器中,然后将其移动到常量容器中。 您不应该使用原始拥有指针,因此我会将其更改为unique_ptr ,这将允许您或多或少地执行相同的操作,并增加在指针被销毁时自动删除数组的好处。

std::unique_ptr<double[]> create_my_array(size_t n) {
    auto my_array = std::make_unique<double[]>(n);
    for(size_t i = 0; i < n; ++i)
        cin >> my_array[i];
    return my_array;
}

然后你可以做

 std::unique_ptr<const double[]> const_array = create_my_array(n);

您可以使用new double[]对函数执行非常相似的操作,返回指针并将其存储到const double * ,但这种方法一无所获,并且容易泄漏内存。

如果你根本不想使用一个函数,例如因为这个功能在你的整个程序中只需要一次,你可以使用相同的想法和一个作用域unique_ptr<double>然后移动到 const 版本中。

std::unique_ptr<const double[]> const_array;
{  // Enclosing this in a block makes the non const pointer unavailable after we've filled it
    auto my_array = std::make_unique<double[]>(n);
    for (size_t i = 0; i < n; ++i)
        std::cin >> my_array[i];
    const_array = std::move(my_array);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM