Can I check in C(++) if an array is all 0 (or false)?

knittl picture knittl · Oct 28, 2010 · Viewed 9.5k times · Source

Can I check in C(++) if an array is all 0 (or false) without iterating/looping over every single value and without allocating a new array of the same size (to use memcmp)?

I'm abusing an array of bools to have arbitrary large bitsets at runtime and do some bitflipping on it

Answer

Oliver Charlesworth picture Oliver Charlesworth · Oct 28, 2010

You can use the following condition:

(myvector.end() == std::find(myvector.begin(), myvector.end(), true))

Obviously, internally, this loops over all values.

The alternative (which really should avoid looping) is to override all write-access functions, and keep track of whether true has ever been written to your vector.

UPDATE

Lie Ryan's comments below describe a more robust method of doing this, based on the same principle.