| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 547 人关注过本帖
标题:数组问题
只看楼主 加入收藏
tfg0116
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2008-10-9
收藏
 问题点数:0 回复次数:1 
数组问题
c++ primer 第四版 习题4.28
编写程序从标准输入设备读入的元素数据建立一个int型vector对象,然后动态创建一个与该vector对象大小一致的数组,把vector对象的所有元素复制给新数组。
小弟的程序是这样的,但是运行后会有下面的错误:Debug Assertion Failed!请高手指点。
    #include<iostream>
         #include<vector>
         using namespace std;
         int main()
       {
         vector<int> ivec;
    int ival;
    cout<<"Enter numbers:"<<endl;
    cin>>ival;
    while(ival != -1)
    {
        ivec.push_back(ival);
        cin>>ival;
    }
    int *pi = new int[ivec.size()];
    for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++, pi++ )
    {
        *pi = *iter;
        cout<<*pi<<'\t';
    }
    delete [] pi;
    return 0;
}
但是此程序如果没有释放内存那条语句就没有出错现象,为什么呢?还有如果重新定义一个指针并把原指针赋值给它也不会有错,不明白为什么
#include<iostream>
         #include<vector>
         using namespace std;
         int main()
       {
         vector<int> ivec;
    int ival;
    cout<<"Enter numbers:"<<endl;
    cin>>ival;
    while(ival != -1)
    {
        ivec.push_back(ival);
        cin>>ival;
    }
    int *pi = new int[ivec.size()];
         int *pi2 = pi;
    for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++, pi2++ )
    {
        *pi2 = *iter;
        cout<<*pi2<<'\t';
    }
    delete [] pi;
    return 0;
}
搜索更多相关主题的帖子: 编写程序 include numbers Failed Enter 
2008-10-14 09:19
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
pi++你让指针下移了,那么它不在是指向动态数组的开始位置,所以逻辑上错了

学习需要安静。。海盗要重新来过。。
2008-10-14 10:21
快速回复:数组问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017198 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved