我有一个指针的向量.我想为每个元素调用一个函数,但是该函数需要一个引用.是否有一种简单的方法去解读元素?
例:
MyClass::ReferenceFn( Element & e ) { ... } MyClass::PointerFn( Element * e ) { ... } MyClass::Function() { std::vector< Element * > elements; // add some elements... // This works,as the argument is a pointer type std::for_each( elements.begin(),elements.end(),boost::bind( &MyClass::PointerFn,boost::ref(*this),_1 ) ); // This fails (compiler error),as the argument is a reference type std::for_each( elements.begin(),boost::bind( &MyClass::ReferenceFn,_1 ) ); }
我可以创建一个肮脏的小包装,需要一个指针,但我认为必须有一个更好的方法?
解决方法
你可以使用boost :: indirect_iterator:
std::for_each( boost::make_indirect_iterator(elements.begin()),boost::make_indirect_iterator(elements.end()),_1 ) );
这将在其运算符*中取消引用两次迭代器.