Как работает этот ручной индексатор строк 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

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