template <typename T>
struct Foo
{
void operator()(T& t) { t(); }
};
是否有類似實現的任何standart或boost仿函數?任何stl/boost仿函數調用operator()
我需要它來遍歷函子的容器:
std::for_each(beginIter, endIter, Foo<Bar>());
或者,也許還有其他辦法做到這一點?
template <typename T>
struct Foo
{
void operator()(T& t) { t(); }
};
是否有類似實現的任何standart或boost仿函數?任何stl/boost仿函數調用operator()
我需要它來遍歷函子的容器:
std::for_each(beginIter, endIter, Foo<Bar>());
或者,也許還有其他辦法做到這一點?
粘合劑如增強或的C++ 0x bind()
使瑣碎產生這樣的算符:
std::for_each(begin, end, boost::bind(&Bar::operator(), _1));
或者用mem_fun_ref
:
std::for_each(v.begin(), v.end(), std::mem_fun_ref(&Bar::operator()));
可能略少羅嗦與BOOST_FOREACH
,特別是如果你有C++ 0x的自動支持:
BOOST_FOREACH(auto f, v) {f();}
至少我發現了它。 boost :: apply應該完成所有工作
std::for_each(beginIter, endIter, boost::bind(boost::apply<void>(), _1));
我不確定你在問什麼。你的代碼現在有什麼問題?它應該做什麼? – 2010-06-16 20:26:37
我有容器的boost :: function對象。我希望用std :: for_each迭代它併爲每個boost :: function元素調用operator(); 我很喜歡像Foo這樣的函數是否已經在stl/boost中實現。編寫它當然沒什麼大不了的。只是認爲它可能已經實施 – Voivoid 2010-06-16 20:30:46