Как объяснить массив [значение - 'a']

0

Что это значит и как это работает?

if (intVec[v.at(i) - 'a'] == 0)
  • 0
    Плохой метод для преобразования a , b , c и т. Д. В 0 , 1 , 2 и т. Д.
  • 0
    'a' - это код 97 в ascii ...
Показать ещё 4 комментария
Теги:
vector

1 ответ

3

Предполагая, что v содержит символы 'a', 'b', 'c' и т.

v.at(i) - 'a'

вычитает 'a' из этих символов.

'a' - 'a' == 0
'b' - 'a' == 1
'c' - 'a' == 2

и так далее.

  • 0
    И причина, по которой вы бы это сделали, заключается в следующем: он позволяет вам хранить значения данных, соответствующие диапазону ключей, относительно эффективно по сравнению с другими методами. Другие варианты включают вектор размером 256 и доступ к слотам, соответствующим необработанным значениям char c = 'a'; intVec[c] = 1; (например, char c = 'a'; intVec[c] = 1; ), но если вам char c = 'a'; intVec[c] = 1; только буквы az, 200+ слотов не используются и потрачены впустую. Карта является еще одним вариантом, но она также имеет накладные расходы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню