|
Boost Users : |
From: David Abrahams (dave_at_[hidden])
Date: 2006-09-18 13:27:35
Alexander Shyrokov <shirokov_at_[hidden]> writes:
> An iterator is pointing to a pointer, how do I add another dereferencing
> operator in the algorithm, so it works on values?
You might try
http://www.boost.org/libs/iterator/indirect_iterator.html
> void f(int& i);
> vector<int*> a;
> // this would work if f would be void f(int* i)
> for_each(a.begin(),a.end(),boost::bind(f,_1));
>
> I could define a dereferencing predicate:
> template<class T>
> struct deref{
> typedef T result_type;
> T operator()(T* p){assert(p);return *p;}
> };
> for_each(a.begin(),a.end(),boost::bind(f,boost::bind(deref<int>,_1)));
std::for_each(
boost::make_indirect_iterator(a.begin())
, boost::make_indirect_iterator(a.end())
, some_operation
);
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net