【发布时间】:2015-02-05 10:40:39
【问题描述】:
我的问题是,总是下面的 for 循环只迭代一次。
在进入循环之前,search_list 的大小始终为 1。但是 search_list 向量可能会在循环内增长,并且应该分别迭代以防某些元素添加到列表中。
std::vector<int> search_list;
search_list.clear();
search_list.push_back(first_elem);
for(auto &discover : search_list)
{
......
if(&std::find(face_ids.begin(), face_ids.end(), i))
{
search_list.push_back(i);
}
......
}
如何使这个 for 循环根据不断增长的向量进行多次迭代?即使某些内容被推送到搜索列表,它也不会重复多次。如果添加了某些东西,它应该将发现设置为该元素并重新进入循环。
【问题讨论】:
-
你的代码还能编译吗?顺便说一句,搜索 face_ids,生成一个临时向量,然后一次性插入到 search_list 中。
-
实际上并不清楚您想要实现什么(如果已添加元素或仅将该元素添加到循环中,则从头开始重新启动循环,或者什么?)。在 for 循环范围内添加或删除向量元素会带来麻烦,而且很可能是未定义的。
-
只要一个新元素被推送到 search_list 向量,我希望这个循环继续迭代。
-
@Caner - 附带问题 --
&std::find(face_ids.begin(), face_ids.end(), i)解释您在这里尝试做什么,尤其是使用&。 -
@Caner “我希望这个循环只要有新元素被推送就一直迭代”。这不是您要解决的问题。那是您为解决最初的问题而创建的问题。人们问你你的初始问题是什么,因为这看起来很奇怪,这无助于你隐藏了大部分函数体,我们不知道
ì来自哪里。这里可能有更好的设计方法,但我们需要更多的上下文。
标签: c++ loops for-loop dynamic vector