У меня есть класс с функцией, которая возвращает счет, например:
class CTestClass
{
public:
// ...
size_t GetCount()const;
// ...
};
И где-то в моей программе у меня есть вектор объектов этого класса.У меня есть функция, чтобы получить общее количество (сумма результатов CTestClass :: GetCount ()), реализованный как обычный цикл:
size_t sum = 0;
for(vector<CTestClass>::const_iterator it = v.begin(); it != v.end(); ++it)
{
sum += it->GetCount();
}
Я хочу реорганизовать его, чтобы использовать средства, доступные в стандартебиблиотека, и я подумал о accumulate
.Я смог сделать это с помощью функционального объекта (легко), но я почти уверен, что это можно сделать без объявления другого объекта (у меня нет C ++ 11 или boost, поэтому нет лямбды, но яиметь TR1).
Когда я искал ответ, я нашел эти ресурсы, но они не решают вопрос:
- Этот почти такой жевопрос, и предоставленные ответы - это цикл, накопление и функтор, и накопление, и лямбда, но есть неотвеченная ссылка на связывание и т. п.
- Этот ответ на аналогичный вопрос использует
accumulate
, plus
и bind
, но использует элемент данных вместо функции-члена.
Итак, есть ли способ сделать это, используя связывание, или что-то подобное?