谁能帮我解决如下的c++问题啊 把vector<int> 中的数据放到int 数组中的时候遇上的
1个回答
展开全部
复制数据的那段代码有问题:
while (pa!= pa + vec.size())
{
*pa = vec[i];
pa++;
}
pa != pa + vec.size()这个条件是永远成立的,这是个死循环。pa会一直加,所以很快你就内存访问越界了。
同样原因,最后的delete[] pa,因为pa已经越界了,所以你这个时候也是内存非法操作。
至于复制,只要在循环里加一个i++就行了。
程序修改如下:
int main(void)
{
int integer;
vector<int> vec;
while (cin>> integer)
{
vec.push_back(integer);
}
int* pa = new int[vec.size()];
int* pTemp = pa;
vector<int>::size_type i = 0;
while (pTemp != pa + vec.size())
{
*pTemp = vec[i];
pTemp++;
i++;
}
pTemp = pa;
while (pTemp != pa + vec.size())
{
cout<< *pTemp << " ";
pTemp++;
}
delete[] pa;
system("pause");
}
另外楼主以后发问题的时候,请直接贴代码。要不然我还得把你的代码敲进去。
while (pa!= pa + vec.size())
{
*pa = vec[i];
pa++;
}
pa != pa + vec.size()这个条件是永远成立的,这是个死循环。pa会一直加,所以很快你就内存访问越界了。
同样原因,最后的delete[] pa,因为pa已经越界了,所以你这个时候也是内存非法操作。
至于复制,只要在循环里加一个i++就行了。
程序修改如下:
int main(void)
{
int integer;
vector<int> vec;
while (cin>> integer)
{
vec.push_back(integer);
}
int* pa = new int[vec.size()];
int* pTemp = pa;
vector<int>::size_type i = 0;
while (pTemp != pa + vec.size())
{
*pTemp = vec[i];
pTemp++;
i++;
}
pTemp = pa;
while (pTemp != pa + vec.size())
{
cout<< *pTemp << " ";
pTemp++;
}
delete[] pa;
system("pause");
}
另外楼主以后发问题的时候,请直接贴代码。要不然我还得把你的代码敲进去。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询