Я думаю, что некоторые замечания, сделанные на сайте, на который вы ссылаетесь, кстати, не верны. Почти на каждом компьютере размер бита на самом деле составляет один байт (такой же, как у символа), поскольку компьютеры могут адресовать только байт, а не бит в пределах байта (если бы вы могли, то у вас была бы только одна восьмая часть адресного пространства, которое у вас есть в настоящее время. с байтами)
Я бы просто использовал байт для вашего вектора, потому что он дает другим людям, которые читают ваш код, лучшее представление об объеме памяти вашего приложения.
Оперативная память очень распространена в современных компьютерах, поэтому вы можете использовать более крупные целочисленные типы, но реально вы не можете получить меньший размер, чем байт.
Чтобы скопировать данные из одного контейнера в другой, сначала создайте итератор для контейнера
vector :: iterator myItr = myVector.begin ()
и итерация по вектору с циклом while или циклом for, пока myItr не достигнет myVector.end ().
Например
for(vector<bool>::iterator myItr = myVector.begin(); myItr<myVector.end(); ++myItr)
{
otherContainer.append(*myItr);
}