Как работает этот ручной индексатор строк C++?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как работает этот ручной индексатор строк C++?

Сообщение Anonymous »

Я новичок в C++. Этот код был предоставлен в качестве примера использования Lambdas для индексации строк. то есть. строка «123» становится беззнаковым целым числом 123.
Моя проблема — основной цикл for, строка, начинающаяся с lIndex. Я понимаю вторую половину этой строки, где цифровой символ aKey вычитается из кода ASCII '0' для получения кода ASCII десятичной версии числа. Однако я не могу понять, почему lIndex продолжает накапливаться и умножаться на десять. Спасибо, если ответите!
template
class StringIndexerLambda {
private:
BasicIndexer fElements;

public:
T& operator[](const std::string& aKey) { return item(aKey); }

T& item(
const std::string& aKey, std::function aMap = [](const std::string& aKey) {
size_t lIndex = 0;

for (size_t i = 0; i < aKey.size(); i++) {
lIndex = lIndex * 10 + (static_cast(aKey) - '0');
}

return lIndex;
}) {
size_t lIndex = aMap(aKey);

assert(lIndex < fElements.size());

return fElements[lIndex];
}
};


Подробнее здесь: https://stackoverflow.com/questions/782 ... dexer-work
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»