В функции, которую я назвал addzerosatfront, все, что я хочу сделать, это добавить нули в начале Typedef vector<bool> bitstring
и, следовательно, изменить размер вектора с нулями спереди. Но цикл работает меньше, чем я хочу, на 2, 3 или 4 (или более) итераций в зависимости от размера vecotors. Я попытался отладить, но я понятия не имею, где эта странная ошибка может происходить. Я пробовал с циклами for и while, но это ничего не меняет …
void addzerosatfront(bitstring& a, size_t n){
if(a.size()>=n) return;
cout<<a.size()<<endl<<n<<endl;
cout<<n-a.size()<<endl;
int i=0;
while(i<n-a.size()){
++i;
a.insert(a.begin(), 0);
}}
РЕДАКТИРОВАТЬ: я решил это с
bitstring x(size_t(n-a.size()), 0);
a.insert(a.begin(), x.begin(), x.end());
Вы увеличиваете i
и уменьшить n-a.size()
в одну итерацию. В результате, если вы хотите изначально добавить n-a.size()
нули, на самом деле вы добавляете (n-a.size()) / 2
нули. Пытаться while(a.size() < n)
,
Есть лучшее решение.
a.insert(a.begin(), n-a.size(), 0);
Других решений пока нет …