VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 967|回复: 3

[求助] 大神看看这个程序,list用for循环就报错,可是用while就可以

[复制链接]
84_avatar_middle
在线会员 发表于 2016-6-17 23:01:07 | 显示全部楼层 |阅读模式
3驿站币
int main()
{
        int ai[11] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 55,89 };
        vector<int>  vec(ai, ai + 10);
        list<int> li(ai, ai + 10);
        for (auto it = vec.begin(); it != vec.end(); it++)
                if (*it % 2 == 0)
                        it = vec.erase(it);
                auto it = li.begin();
                while (it != li.end())
                if (*it % 2 != 0)
                        it = li.erase(it);
                else
                        it++;
                /*for (auto it = li.begin(); it != li.end(); it++)
                if (*it % 2 != 0)
                        it = li.erase(it);*/
                //为什么这里用这个for循环就 报错。
                for (auto it = vec.begin(); it != vec.end(); it++)
                        cout << *it << "  ";
                cout << endl;
                list<int>::reverse_iterator  it1;
                for (auto it1 = li.rbegin(); it1 != li.rend(); it1++)
                        cout << *it1 << "  ";
                   cout << endl;
                system("pause");
                return 0;
}

最佳答案

查看完整内容

风格太别扭,erase后it--;




上一篇:在下有个疑问.
下一篇:找个高手
60_avatar_middle
在线会员 发表于 2016-6-17 23:01:08 | 显示全部楼层
风格太别扭,erase后it--;

评分

参与人数 1威望 +2 +3 收起 理由
51_avatar_small Syc + 2 + 3 感谢分享!

查看全部评分

84_avatar_middle
ico_lz  楼主| 发表于 2016-6-17 23:12:46 | 显示全部楼层
hack888 发表于 2016-6-17 23:07
风格太别扭,erase后it--;

it=li.erase(it--)
可是还是不行,还是报错。
84_avatar_middle
ico_lz  楼主| 发表于 2016-6-17 23:33:07 | 显示全部楼层
非常感谢,我理解错了,后面加了it--解决了问题,再次感谢。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-7-24 00:47

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表