for 루프를 사용하는 코드를 가지고 있는데 transform 또는 적어도 for_each 대신 사용하고 싶지만 어떻게 볼 수는 없습니다.boost :: function objects의 컨테이너에있는 STL 알고리즘
typedef std::list<boost::function<void(void) > CallbackList;
CallbackList callbacks_;
//...
for(OptionsMap::const_iterator itr = options.begin(); itr != options.end(); ++itr)
{
callbacks_.push_back(boost::bind(&ClassOutput::write_option_,this,*itr));
}
나중에 코드에서이 nullary 함수 개체 컬렉션을 호출하려고합니다. 나는 for 루프도 여기에 사용하고 있으며 for_each를 어떻게 든 사용할 수 있어야한다. 당신이 당신이 호출하는 펑터를 필요로하기 때문에 당신이 자체에 바인드를 호출 할 필요가 있다고 생각,
typedef boost::function<void(void)> NullaryFunc;
for_each(callbacks_.begin(),callbacks_.end(),boost::bind(&NullaryFunc::operator(),_1));
하나의 변화와 함께 작동 : 대신 펑터 클래스의 람다를 사용하여 C++ 0X에서
. operator()의 인수는 OptionsMap :: value_type이어야합니다. 감사. –고정되었습니다 (15 자). –