C++ 我可以用这种方式将数组转换为指针并将指针返回到常量吗?
我可以用这种方式将数组转换为指针并将指针返回到常量吗?它在内存分配方面是正确的吗C++ 我可以用这种方式将数组转换为指针并将指针返回到常量吗?,c++,arrays,function,pointers,C++,Arrays,Function,Pointers,我可以用这种方式将数组转换为指针并将指针返回到常量吗?它在内存分配方面是正确的吗 const int* convert_vector_to_pointer(std::vector<std::pair<int, int> >& v) { std::vector<std::pair<int, int> >::iterator it = v.begin(); int* a = new int[2*v.size()]; in
const int* convert_vector_to_pointer(std::vector<std::pair<int, int> >& v)
{
std::vector<std::pair<int, int> >::iterator it = v.begin();
int* a = new int[2*v.size()];
int i = 0;
for(; it != v.end(); ++it)
{
if(i < 2*v.size())
{
a[i] = (*it).first;
a[i + 1] = (*it).first;
i += 2;
}
}
const int* b = const_cast<const int*>(a);
return b;
}
const int*将向量转换为指针(std::vector&v)
{
std::vector::iterator it=v.begin();
int*a=新的int[2*v.size()];
int i=0;
for(;it!=v.end();++it)
{
如果(i<2*v.size())
{
a[i]=(*it)。首先;
a[i+1]=(*it);
i+=2;
}
}
常数int*b=常数(a);
返回b;
}
函数的问题是在函数中分配数组,并返回指向该数组的const
指针。任何一个本身都可以,但总的来说,这意味着调用代码将被赋予delete
ing一个const
对象的任务,这是未定义的行为。因此,不,您的示例并不完全正确。函数的问题在于,您在函数中分配数组,并返回指向该数组的const
指针。任何一个本身都可以,但总的来说,这意味着调用代码将被赋予delete
ing一个const
对象的任务,这是未定义的行为。因此,不,您的示例并不正确。您最好只返回一个std::vector
,并跳过所有动态分配垃圾。要清除某些内容,变量a
不是数组。它可以用作数组,就像正确的数组可以用作指针一样。为什么不改用std::vector
(和const std::vector
)呢?Qt中有一个函数,它需要QPolygon pol的const Int*参数;pol.设定点(2,阵列)。函数的形式为void设置点(int nPoints,const int*points),您最好只返回一个std::vector
,并跳过所有动态分配垃圾。要清除某些内容,变量a
不是数组。它可以用作数组,就像正确的数组可以用作指针一样。为什么不改用std::vector
(和const std::vector
)呢?Qt中有一个函数,它需要QPolygon pol的const Int*参数;pol.设定点(2,阵列)。函数的形式为空设定点(int nPoints,const int*points)