std::vector<T>は確保している要素の連続性を要求しているよ
他にもvector<bool>についてはコンテナとしての要件を満たしていない可能性があるのでbegin(),end()は使ってはいけないなどの制約がある