我正在閱讀其他人的代碼,這部分讓我困惑。任何人都可以向我解釋*this
在這裏指什麼,這條線(for_each(node->items.begin(), node->items.end(), *this);
)在做什麼?這段代碼來自搜索R/R *樹中的元素。我想在這裏,我們應該提供一個函子for_each(begin,end,functor)
,但我不知道*this
(這在我看來是「node->items
」矢量的元素)實際上會做什麼。C++「this」指針在for_each
// this functor recursively walks the tree
template <typename Acceptor, typename Visitor>
struct QueryFunctor : std::unary_function< const BoundedItem, void > {
const Acceptor &accept;
Visitor &visitor;
explicit QueryFunctor(const Acceptor &a, Visitor &v) : accept(a), visitor(v) {}
void operator()(BoundedItem * item)
{
Node * node = static_cast<Node*>(item);
if (visitor.ContinueVisiting && accept(node))
{
if (node->hasLeaves)
for_each(node->items.begin(), node->items.end(), VisitFunctor<Acceptor, Visitor>(accept, visitor));
else
for_each(node->items.begin(), node->items.end(), *this);
}
}
};
'this'是一個指向特定方法被調用的對象的指針。 –
'for_each'是標準庫的一部分,因此您可以輕鬆地在線搜索它。例如[這裏](http://en.cppreference.com/w/cpp/algorithm/for_each) –
我絕對知道for_each @FabioTurati – daydayup