I think some of the points made on the site you linked to are not correct by the way. On almost every computer the size of a bit is really one byte (same as a character) because computers can only address a byte not a bit within a byte (if you could then you would only have one eighth of the addressing space you currently have with bytes)
I would just use a byte for your vector because it gives other people who read your code a better idea of the memory footprint of your application.
Ram is very plentiful in modern computers so you may be able to use larger integral types but realistically you can't go smaller than a byte.
To copy data from one container to another first create an iterator for the container
vector::iterator myItr = myVector.begin()
and iterate through the vector with a while loop or a for loop until myItr reaches myVector.end().
For example
for(vector<bool>::iterator myItr = myVector.begin(); myItr<myVector.end(); ++myItr)
{
otherContainer.append(*myItr);
}