【发布时间】:2014-02-06 23:10:06
【问题描述】:
所以我使用了一个向量列表,而我的代码似乎破坏了它,因此 for 循环不会退出。
这是有效的代码:
for(possible_planes_it = possible_planes.begin(); possible_planes_it != possible_planes_end; possible_planes_it++)
{
if(static_cast<float>(good_matches.size()) >= static_cast<float>((matches.size())*0.8))
{
possible_planes_it->push_back(Plane(area, *center_it, keypoint, descriptor, count));
}
else
{
list.push_back(vector<Plane>());
list.back().push_back(Plane(area, *center_it, keypoint, descriptor, count));
}
}
这会导致迭代器中断:
for(possible_planes_it = possible_planes.begin(); possible_planes_it != possible_planes_end; possible_planes_it++)
{
if(static_cast<float>(good_matches.size()) >= static_cast<float>((matches.size())*0.8))
{
if(possible_planes_it->back().getTimestamp() < count) // Means that there has not been a match found this round
{
possible_planes_it->push_back(Plane(area, *center_it, keypoint, descriptor, count));
possible_planes_it->back().setNumberOfGoodMatches(good_matches.size());
}
else
{
if(possible_planes_it->back().getNumberOfGoodMatches() < good_matches.size())
{
possible_planes_it->pop_back(); // If a better match has been found, remove the last vector entry and push the new one
possible_planes_it->push_back(Plane(area, *center_it, keypoint, descriptor, count));
possible_planes_it->back().setNumberOfGoodMatches(good_matches.size());
}
else
{
list.push_back(vector<Plane>());
list.back().push_back(Plane(area, *center_it, keypoint, descriptor, count));
}
}
}
else
{
list.push_back(vector<Plane>());
list.back().push_back(Plane(area, *center_it, keypoint, descriptor, count));
}
}
有谁知道我做错了什么:D?
【问题讨论】:
-
哈哈。好点子。标记为 for 循环,但代码中的任何地方都没有一个
for... -
Does anyone have an idea what I do so horribly wrong :D?你忘记了循环。 -
你的
static_cast<float>臭得要命。当你做错事时关闭编译器很可能会让你在一台不合作的计算机前摸索几个小时。帮自己一个忙,移除演员表,然后尝试理解并纠正问题。 -
你说你有一个无限循环;而且第二个代码 sn-p “导致迭代器中断”。你到底是什么意思?
-
现在使用 for 循环 :D。我的坏....
标签: c++ for-loop iterator infinite-loop