c++ цикл не добовляет значения в вектор

vector <int> cnt(10);
       string s;
       getline(cin, s);
       for (auto el: s){
              if (isdigit(el)){
                     el = (int) el;
                     cnt[el] += 1;
              }
       }

итерируюсь по строке и если символ это число то изменяю в вектор cnt его значение на + 1, но оно почемуто не изменяется


Ответы (1 шт):

Автор решения: Harry

Видите ли... не огорчайтесь, но если, скажем, el — это символ 0, то (int)el будет равно 48 — ASCII-коду символа 0... Так что вы получаете выход за границу вашего вектора и неопределенное поведение.

Было бы логичнее написать

if (isdigit(el)) cnt[el-'0']++;
→ Ссылка