, поэтому я сейчас перебираю часть своего кода и пытаюсь избавиться от некоторых циклов for, которые мне не нравятся, и пытаюсь получить больше опыта со стандартными алгоритмами. Итак, l oop, который у меня есть, теперь можно объяснить лучше всего по следующему фрагменту кода:
// Defined struct
struct A {
/* stuff */
size_t computed_value() const { /* ... */ return value; }
};
// In other location in code
std::vector<A> vecA;
// ... insert tons of A's into vecA
size_t summed_value = 0;
for(const auto& a : vecA) {
summed_value += a.computed_value();
}
Это l oop Я хочу заменить стандартным алгоритмом, и я подумал, что нашел идеальное соответствие .. std::transform_reduce
в numeric
заголовок, но кажется, что ни в моей версии clang или g ++ эта функция не включена ..? Некоторые другие вещи, о которых я подумал: std::accumulate
, но это требует неявного преобразования A в int (насколько я могу судить) & std::transform
, но я не смог найти способ использовать int или size_t в качестве выходного значения .
Примечание. На данный момент я готов использовать только до C ++ 17.
У кого-нибудь есть какие-либо советы по поводу функции, которую я должен изучить? Спасибо!