VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 663|回复: 6

请教这个函数,while版本为什么不能正确的执行

[复制链接]

2

主题

54

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
发表于 2020-2-1 12:40:02 | 显示全部楼层 |阅读模式
void initList(list<string> &slist, const vector<string> &svec)
{
        vector<string>::const_iterator cit = svec.begin();

//         while(cit != svec.end())
//         {
//                 slist.push_front(*cit);
//         }

        cit = svec.begin();
        for (; cit != svec.end(); ++cit)
        {
                slist.push_back(*cit);
        }
}
程序一直处于的处理状态,而for版本可以正确的执行,跟踪发现cit != svec.end()可能存在问题,但实在不理解
高手多多指教
回复

使用道具 举报

2

主题

54

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
 楼主| 发表于 2020-3-13 15:00:01 | 显示全部楼层
哦,slist.push_front(*cit);写成push_back()一样的
总之处于处理的状态
不能正确执行
回复

使用道具 举报

2

主题

54

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
 楼主| 发表于 2020-3-13 16:30:01 | 显示全部楼层
++cit在while循环中,上面忘了写了
回复

使用道具 举报

0

主题

17

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-3-13 17:00:01 | 显示全部楼层
你在for循环中有++cit,
而在while中没有改变cit,当然退不出来
回复

使用道具 举报

2

主题

54

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
 楼主| 发表于 2020-3-13 18:15:01 | 显示全部楼层
汗,改糊涂了
回复

使用道具 举报

0

主题

19

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-3-13 21:45:01 | 显示全部楼层
while版跟for版本身就不一样嘛,
一个用push_front,一个用push_back
一个cit在递增移动,一个cit不动。
回复

使用道具 举报

0

主题

17

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-3-14 03:15:01 | 显示全部楼层
改成push_back()可以正常退出啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

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