当前位置: 首页>>代码示例>>C++>>正文


C++ Visitor::IsDone方法代码示例

本文整理汇总了C++中Visitor::IsDone方法的典型用法代码示例。如果您正苦于以下问题:C++ Visitor::IsDone方法的具体用法?C++ Visitor::IsDone怎么用?C++ Visitor::IsDone使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Visitor的用法示例。


在下文中一共展示了Visitor::IsDone方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: Accept

void ListAsArray::Accept(Visitor& visitor) const
{
  for(unsigned int i = 0; i < nCount && !visitor.IsDone(); i++)
    {
      visitor.Visit(*(array[i]));
    }
}
开发者ID:JavaZhangYin,项目名称:coding,代码行数:7,代码来源:MyList.cpp

示例2: Accept

void StackAsArray::Accept (Visitor& visitor) const
{
    for (unsigned int i = 0; i < count && !visitor.IsDone (); ++i)
    {
    	visitor.Visit (*array [i]);
    }
}
开发者ID:eandbsoftware,项目名称:data_structures_dp_cpp,代码行数:7,代码来源:StackAsArray.cpp

示例3: TopologicalOrderTraversal

//
//   This file contains the C++ code from Program 16.9 of
//   "Data Structures and Algorithms
//    with Object-Oriented Design Patterns in C++"
//   by Bruno R. Preiss.
//
//   Copyright (c) 1998 by Bruno R. Preiss, P.Eng.  All rights reserved.
//
//   http://www.pads.uwaterloo.ca/Bruno.Preiss/books/opus4/programs/pgm16_09.cpp
//
void Digraph::TopologicalOrderTraversal (Visitor& visitor) const
{
    Array<unsigned int> inDegree (numberOfVertices);
    for (Vertex::Number v = 0; v < numberOfVertices; ++v)
	inDegree [v] = 0;
    Iterator& p = Edges ();
    while (!p.IsDone ()) {
	Edge& edge = dynamic_cast<Edge&> (*p);
	++inDegree [edge.V1 ()];
	++p;
    }
    delete &p;

    Queue& queue = *new QueueAsLinkedList ();
    queue.RescindOwnership ();
    for (Vertex::Number v = 0; v < numberOfVertices; ++v)
	if (inDegree [v] == 0)
	    queue.Enqueue (SelectVertex (v));
    while (!queue.IsEmpty () && !visitor.IsDone ())
    {
	Vertex& vertex =
	    dynamic_cast<Vertex&> (queue.Dequeue ());
	visitor.Visit (vertex);
	Iterator& q = EmanatingEdges (vertex);
	while (!q.IsDone ()) {
	    Edge& edge = dynamic_cast<Edge&> (*q);
	    Vertex& to = edge.V1 ();
	    if (--inDegree [to] == 0)
		queue.Enqueue (to);
	    ++q;
	}
	delete &q;
    }
    delete &queue;
}
开发者ID:lbaby,项目名称:codeGarden,代码行数:45,代码来源:pgm16_09.cpp

示例4: Accept

void BagAsLinkedList::Accept (Visitor& visitor) const
{
    ListElement<Object*> const* ptr;

    for (ptr = list.Head (); ptr != 0 && !visitor.IsDone (); ptr = ptr->Next())
    {
        visitor.Visit (*ptr->Datum ());
    }
}
开发者ID:eandbsoftware,项目名称:data_structures_dp_cpp,代码行数:9,代码来源:BagAsLinkedList.cpp

示例5: BreadthFirstTraversal

void Tree::BreadthFirstTraversal (Visitor& visitor) const
{
    Queue& queue = *new QueueAsLinkedList ();
    queue.RescindOwnership ();

    if (!IsEmpty ())
    	queue.Enqueue (const_cast<Tree&> (*this));
    while (!queue.IsEmpty () && !visitor.IsDone ())
    {
    	Tree const& head = dynamic_cast<Tree const &> (queue.Dequeue ());

		visitor.Visit (head.Key ());
		for (unsigned int i = 0; i < head.Degree (); ++i)
		{
			Tree& child = head.Subtree (i);
			if (!child.IsEmpty ())
				queue.Enqueue (child);
		}
    }
    delete &queue;
}
开发者ID:eandbsoftware,项目名称:data_structures_dp_cpp,代码行数:21,代码来源:Tree.cpp


注:本文中的Visitor::IsDone方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。