Even with plain C, you can just iterate backwards:
for (i = ctr_size(container); i > 0; i--)
if (!predicate(container, i - 1))
ctr_remove(container, i - 1);