标题:关于循环vextor
只看楼主
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
结帖率:94.64%
已结贴  问题点数:20 回复次数:6 
关于循环vextor
*a.begin()=*(a.end())++;
这样能实现vector循环吗?
如果不行,能不能不通过IF来实现vector循环?
搜索更多相关主题的帖子: vector 
2013-04-28 19:05
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2391
专家分:13384
注 册:2013-3-3
得分:7 
很普通的算法,在一个循环中检查每个元素,判断条件,如果为真,就删除这个节点,再继续循环。看似简单,但是却一个不大不小的陷阱,这种小问题的结论,总是记不住,每次遇到的时候,都得写一个测试程序来验证,干脆总结一下,做个结论。
 
最简单的方法
 
std::remove_if(_First, _Last, Predicate)
 
STL是用模板实现,简单高效,但是很多情况下,需要在循环中处理其他逻辑,不能直接使用这个函数

Maybe
2013-04-28 21:41
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
得分:0 
回复 2楼 邓士林
抱歉了,可能我没表达清楚,就是先循环的线性表一样,实现循环向量

[ 本帖最后由 a99875984 于 2013-4-29 08:53 编辑 ]
2013-04-29 07:27
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:6 
从来没听说过if能实现循环

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-29 20:46
zhuxiaoneng
Rank: 4
等 级:业余侠客
威 望:2
帖 子:51
专家分:215
注 册:2013-4-10
得分:7 
这个有几种方式吧
for (int i = 0; i < vec.size; ++i)

for_each(vec.begin(), vec.end(), func)

    vector<int>::iterator it_b =  vec.begin();
    vector<int>::iterator it_e =  vec.end();

    while (it_b != it_e)
    {
        it_b++;
    }
2013-05-02 11:39
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
得分:0 
回复 4楼 peach5460
额,我表达错误,就是指针迭代到向量尾部元素时用IF返回到头部元素
2013-05-02 12:54
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
得分:0 
回复 5楼 zhuxiaoneng
额,我的意思是就像循环队列一样,尾结点的下一个结点又是头结点。
不过还是非常感谢,以前都不知道for_each。只知道用迭代或者循环来实现

[ 本帖最后由 a99875984 于 2013-5-2 13:02 编辑 ]
2013-05-02 13:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-405854-1-1.html




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

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