[英]Passing a const double[][] array as argument to a double** interface
[英]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.