是否可以输入到const double数组

Is it possible to input to a const double array?

本文关键字:const double 数组 输入 是否      更新时间:2023-10-16
const double* constArr = new const double [];
for(int i =0;i<n;i++)
cin >>constArr[i];

这样的东西?是否可以输入const double数组?

最清洁的解决方案是使用将元素添加到非const容器中的出厂功能,然后将其移动到常数容器中。您不应该使用原始的指针,因此我会将其更改为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[]的函数做一些非常相似的操作,将指针和Callee存储到const double *中,但是该方法不再实现,并且很容易泄漏内存。

如果您根本不想使用函数,例如,由于整个程序中只需要一次功能,因此您可以使用scoped 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);
}