编程论坛
注册
登录
编程论坛
→
C++教室
关于循环vextor
a99875984
发布于 2013-04-28 19:05, 803 次点击
*a.begin()=*(a.end())++;
这样能实现vector循环吗?
如果不行,能不能不通过IF来实现vector循环?
6 回复
#2
邓士林
2013-04-28 21:41
很普通的算法,在一个循环中检查每个元素,判断条件,如果为真,就删除这个节点,再继续循环。看似简单,但是却一个不大不小的陷阱,这种小问题的结论,总是记不住,每次遇到的时候,都得写一个测试程序来验证,干脆总结一下,做个结论。
最简单的方法
std::remove_if(_First, _Last, Predicate)
STL是用模板实现,简单高效,但是很多情况下,需要在循环中处理其他逻辑,不能直接使用这个函数
#3
a99875984
2013-04-29 07:27
回复 2楼 邓士林
抱歉了,可能我没表达清楚,就是先循环的线性表一样,实现循环向量
[
本帖最后由 a99875984 于 2013-4-29 08:53 编辑
]
#4
peach5460
2013-04-29 20:46
从来没听说过if能实现循环
#5
zhuxiaoneng
2013-05-02 11:39
这个有几种方式吧
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++;
}
#6
a99875984
2013-05-02 12:54
回复 4楼 peach5460
额,我表达错误,就是指针迭代到向量尾部元素时用IF返回到头部元素
#7
a99875984
2013-05-02 13:00
回复 5楼 zhuxiaoneng
额,我的意思是就像循环队列一样,尾结点的下一个结点又是头结点。
不过还是非常感谢,以前都不知道for_each。只知道用迭代或者循环来实现
[
本帖最后由 a99875984 于 2013-5-2 13:02 编辑
]
1