vector<bool> is somewhat misleading, as it does not fulfill the standard's criteria for a container. It is proxied to optimize for space not efficiency.
I would prefer a bitset to vector<bool>. For more information see More Exceptional C++ by Herb Sutter.