新手求助 vector复制给int数组的问题

meantobe_bo 2014-07-01 04:01:48
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> ivec;
int val;
cout<<"Enter number"<<endl;
while(cin>>val)
ivec.push_back(val);
int *ptr=new int[ivec.size()];
size_t i=0;
for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter,++i)
ptr[i]=*iter;
for(vector<int>::size_type j=0;j!=i+1;++j)
cout<<ptr[j]<<" ";
return 0;
}

最后输出数组时为什么会多一个 -33686019
...全文
134 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT保安 2014-07-01
  • 打赏
  • 举报
回复
for(vector<int>::size_type j=0;j!=i+1;++j) 这句代码有问题,不要i+1,i就行了,从0开始计数的! 还有, while(cin>>val) ivec.push_back(val); 这不是死循环吗?
难题 2014-07-01
  • 打赏
  • 举报
回复
i已经在prt最后一个元素的后一个位置了,应该改为j!=i
yangyunzhao 2014-07-01
  • 打赏
  • 举报
回复
for(vector<int>::size_type j=0;j!=i+1;++j) 这里为何要j!=i+1; +1是什么含义?
longburulin 2014-07-01
  • 打赏
  • 举报
回复
消灭0飞虎
#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> ivec;
	int val;
	cout<<"Enter number"<<endl;
	while(cin>>val)
		ivec.push_back(val);
	int *ptr=new int[ivec.size()];
	size_t i=0;
	for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter,++i)
		ptr[i]=*iter;
	for(vector<int>::size_type j=0;j!=i;++j)
		cout<<ptr[j]<<" ";
	return 0;
}
这样ok了

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧