Listing 3
template<class InputIterator, class Size = unsigned long>
struct calc_snack : public std::unary_function<InputIterator,Size>
{
calc_snack() : m_n(0) {};
calc_snack(const calc_snack & rhs) : m_n(rhs.m_n) {};
calc_snack& operator=
(const calc_snack& rhs) { m_n = rhs.m_n; return * this; }
Size long operator()(InputIterator first, InputIterator last) const
{
Size result =
(*first) * *(first+1) + *(first+2) - *(first+3) + *(first+4);
SnacksAvail.erase(result);
return ++m_n;
}
operator Size () const { return m_n; }
private:
mutable Size m_n;
};