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