I was converting a C++ algorithm to C#.
I came across this for loop:
for (u = b.size(), v = b.back(); u--; v = p[v])
b[u] = v;
It gives no error in C++, but it does in C# (cannot convert int to bool).
I really can't figure out this for loop, where is the condition?
Can someone please explain?
PS. Just to check, to adapt a VECTOR to a LIST does
b.back()
correspond to
b[b.Count-1]
?
Best Solution
The condition of the
for
loop is in the middle - between the two semicolons;
.In C++ it is OK to put almost any expression as a condition: anything that evaluates to zero means
false
; non-zero meanstrue
.In your case, the condition is
u--
: when you convert to C#, simply add!= 0
: