1. ホーム
  2. c#

[解決済み] 見たこともないC++のforループ

2022-04-25 20:38:04

質問

私はC++のアルゴリズムをC#に変換していました。 このforループに出会いました。

for (u = b.size(), v = b.back(); u--; v = p[v]) 
b[u] = v;

C++ではエラーになりませんが、C#ではエラーになります(intをboolに変換できない)。 このforループは本当に理解できない、条件はどこにあるのでしょうか?

どなたか解説をお願いします。

PS. 一応確認しておきますが、VECTORをLISTに適応させるためには b.back() に対応する b[b.Count-1]です。 ?

解決方法は?

の条件は for ループの真ん中、2つのセミコロンの間にあります。 ; .

C++では、ほとんどすべての式を条件として置くことができます。 false 0でない場合は true .

あなたの場合、条件は u-- を追加するだけで、C#に変換できます。 != 0 :

for (u = b.size(), v = b.back(); u-- != 0; v = p[v]) 
    b[u] = v; //                     ^^^^ HERE