Подсчет общего количества символов в СТД::набор


У меня есть СТД::набор и мне нужно знать общее количество символов (сумма всех длина строки):

static size_t SumLength(size_t value, const std::string &str)
{
    return str.length() + value;
}

size_t TotalLength(std::set<std::string> &stringSet)
{
   return std::accumulate(stringSet.begin(), stringSet.end(), 0, SumLength);
}

Что вы думаете о таком подходе?



365
6
c++
задан 8 марта 2011 в 02:03 Источник Поделиться
Комментарии
2 ответа

Вы должны принять параметр Итогодлина константный, поэтому вы можете использовать его на постоянной наборы. Поскольку Итогодлина не изменяет свой аргумент, нет никаких причин не использовать ссылку.

Также это мелочь, но я бы изменила название SumLength в AddLength как сумма для меня говорит о том, что он работает на несколько строк.

Другие, чем, что ваш код прекрасно выглядит тонкой и прямой.

9
ответ дан 8 марта 2011 в 02:03 Источник Поделиться

Если вы хотите улучшить локальность ссылок из кода, который вы могли бы заменить SumLength с лямбда-функцией. Это позволит предотвратить будущие наладчики/и т. д. поставить много кода между SumLength и Итогодлина. Недостатком будет то, что вы потеряете возможность звонить SumLength другой функции вне Итогодлина.

2
ответ дан 12 декабря 2013 в 11:12 Источник Поделиться