Because you're walking through the array in both cases.
1st example (with iterator)
collection collect
collection ub
collection lb
Create 3 iterators,
C = collect.iterator
U = ub.iterator
L = lb.iterator
\nfor each result X {\n\n for (C = collect.begin(), U = ub.begin(), L = lb.begin();\n C != collect.end();\n C++, U++, L++) {\n if ((X < U.value()) && (X > L.value()) (C.value())++;\n }\n}\n
Hint, it's even easier in method two, since you only need one iterator in this case.
\nit = array.iterator();\nfor each result X {\n for (it = array.begin(); it != array.end(); it++) {\n if ((X < it.value().U) && (X > it.value().L)) (it.value().C)++;\n }\n}\n