Я новичок в 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