Странная ошибка, которая не имеет никакого смысла c ++ простой цикл for / while на векторе

В функции, которую я назвал 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());

-2

Решение

Вы увеличиваете i и уменьшить n-a.size() в одну итерацию. В результате, если вы хотите изначально добавить n-a.size() нули, на самом деле вы добавляете (n-a.size()) / 2 нули. Пытаться while(a.size() < n),

Есть лучшее решение.

a.insert(a.begin(), n-a.size(), 0);
5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector