我发现了一些关于return
陈述的新东西(对我自己而言)。结合此强制调试器不从函数返回控制for
并if
继续执行下一条语句,而是在函数内部堆叠并重复for
直到条件不成立。例如:
struct Position
{
int position;
int value;
};
vector<Position> find_all(vector<Position>& v, int value)
{
vector<Position> res;
for (auto p = v.begin(); p != v.end(); ++p)
if (p->value == value)
res.push_back(*p);
return res;
}
int main()
{
vector<Position> v { { 0, 0 }, { 1, 1 }, { 2, 0 }, { 3, 3 },
{ 4, 4 }, { 5, 6 }, { 6, 0 }, { 7, 2 } };
find_all(v, 0);
cin.get();
return 0;
}
如果将调试器设置为return res;
并开始调试代码,则当您进入此方法时,函数将继续在函数内部执行,直到 for 循环结束,而不是返回。如果您在语句中设置大括号,if
则返回将正常工作。
我不明白,请有人解释一下会发生什么以及为什么?我正在使用,但在 Stroustrup 书中VisualC++
发现了这种用法。return