gpt4 book ai didi

c++ - 是否可以输入 const double 数组?

转载 作者:行者123 更新时间:2023-11-30 05:04:39 25 4
gpt4 key购买 nike

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);
}

关于c++ - 是否可以输入 const double 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48772412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com