c – 使用for_each和boost :: bind与指针向量

前端之家收集整理的这篇文章主要介绍了c – 使用for_each和boost :: bind与指针向量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个指针的向量.我想为每个元素调用一个函数,但是该函数需要一个引用.是否有一种简单的方法去解读元素?

例:

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 ) );

这将在其运算符*中取消引用两次迭代器.

猜你在找的C&C++相关文章