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]
?
The condition of the
forloop 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: