谁能帮我解决如下的c++问题啊 把vector<int> 中的数据放到int 数组中的时候遇上的

 我来答
帐号已注销
2012-11-18 · TA获得超过3000个赞
知道大有可为答主
回答量:1338
采纳率:75%
帮助的人:1293万
展开全部
复制数据的那段代码有问题:
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");
}
另外楼主以后发问题的时候,请直接贴代码。要不然我还得把你的代码敲进去。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式