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
ステートメントで中括弧を設定すると、return は正常に機能します。
理解できません 何が起こったのか、なぜなのか誰か説明してください。私は使用していますが、Stroustrup book でVisualC++
このタイプの使用法を見つけました。return