gpt4 book ai didi

c++ - For 循环遍历生长 vector

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:33 25 4
gpt4 key购买 nike

我的问题是,下面的 for 循环总是只迭代一次。

在进入循环之前,search_list 的大小始终为 1。但是 search_list vector 可能会在循环内增长,并且应该分别迭代,以防列表中添加了一些元素。

   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 循环根据那个不断增长的 vector 迭代多次?即使将某些内容推送到搜索列表,它也不会迭代多次。如果添加了某些内容,它应该将发现设置为该元素并重新进入循环。

最佳答案

您的问题是迭代器是在您开始循环时创建的,但随后没有更新。您应该对索引执行 for 循环:

std::vector<int> search_list;
search_list.clear();
search_list.push_back(first_elem);

for (int ii=0 ; ii < search_list.size() ; ii++) {
......
if(&std::find(face_ids.begin(), face_ids.end(), i))
{
search_list.push_back(i);
}
......
}

这样,如果添加了一个元素,search_list.size() 会增长并且循环会继续,因为它每次都会调用它。

请注意,如果始终验证 if 语句,这将产生无限循环。

编辑:根据 Félix Cantournet 的建议,这里有一个带有 while 循环和一些控制使其不能无限的版本

int max_it = 1000;
int ii=0;
...
// i = MAGIC
...
while (&std::find(face_ids.begin(), face_ids.end(), i) && ii < max_it) {
search_list.push_back(i);
......
// i = NEW MAGIC
......
ii++;
}

关于c++ - For 循环遍历生长 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28341792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com