How do I make 1 bool take 1 bit instead of 1 byte?
Instead of an array, you should use an STL container that is specifically designed to store bool values as bits: std::vector < bool >. You need to #include < vector > and create an instance of vector < bool >. For example:
vector < bool > bools; // has 100 million bits
You can find more information on vector < bool > and the vector container in general in any STL book or by browsing your compiler's online help.