本文整理汇总了C++中VertexMap::end方法的典型用法代码示例。如果您正苦于以下问题:C++ VertexMap::end方法的具体用法?C++ VertexMap::end怎么用?C++ VertexMap::end使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VertexMap
的用法示例。
在下文中一共展示了VertexMap::end方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: visit
bool Graph::visit(int v, std::list<int> & sortedList)
{
VertexIterator iter = vertices.find(v);
if (iter != vertices.end())
{
if (iter->second.visited == false)
{
iter->second.visited = true;
std::list<Edge>::const_iterator liter = iter->second.adjList.begin();
for (; liter != iter->second.adjList.end(); ++liter)
{
if (!visit(liter->dest, sortedList))
{
return false;
}
}
sortedList.push_front(iter->first);
}
else
{
return false;
}
}
return true;
}
示例2: TopologicalSort
void Graph::TopologicalSort()
{
VertexConstIterator iter = vertices.begin();
std::list<int> sortedList;
bool cycle = false;
for (; iter != vertices.end(); ++iter)
{
if (iter->second.indegree == 0)
{
if (!visit(iter->first, sortedList))
{
cycle = true;
break;
}
}
}
if (cycle || sortedList.size() != vertices.size())
{
cout << "CYCLE";
return;
}
std::list<int>::const_iterator liter = sortedList.begin();
for (; liter != sortedList.end(); ++liter)
{
cout << *liter << " ";
}
}
示例3: BreadthFirstTour
void Graph::BreadthFirstTour(int v)
{
cout << "BFS BEGIN\n";
std::queue<int> q;
VertexConstIterator iter = vertices.find(v);
if (iter != vertices.end())
{
q.push(iter->first);
}
else
{
cout << "BFS END\n";
return;
}
VertexIterator iter1;
while (!q.empty())
{
int vtx = q.front();
q.pop();
Vertex & v = vertices[vtx];
if (v.visited == false )
{
v.visited = true;
cout << v.orig << " ";
std::list<Edge>::const_iterator iter = v.adjList.begin();
while (iter != v.adjList.end())
{
//cout << "dest " << iter->dest << endl;
VertexConstIterator citer = vertices.find(iter->dest);
if (citer != vertices.end())
{
q.push(citer->first);
//cout << "pushing " << citer->orig << endl;
}
++iter;
}
}
}
cout << "\nBFS END" << endl;
resetStates();
}
示例4: print
void Graph::print()
{
VertexConstIterator iter = vertices.begin();
for (; iter != vertices.end(); ++iter)
{
cout << iter->second << "\n";
}
}
示例5: resetStates
void Graph::resetStates()
{
VertexIterator iter = vertices.begin();
for (; iter != vertices.end(); ++iter)
{
iter->second.visited = false;
}
}
示例6: addEdge
void Graph::addEdge(int v1, int v2)
{
VertexIterator iter = vertices.find(v1);
if (iter != vertices.end())
{
Edge edge(v2);
iter->second.adjList.push_back(edge);
}
iter = vertices.find(v2);
iter->second.indegree++;
}
示例7: ConstructPath
std::vector<Vertex> ConstructPath( VertexMap& aFrom, const Vertex& aCurrentNode)
{
VertexMap::iterator i = aFrom.find(aCurrentNode);
if( i != aFrom.end() )
{
std::vector<Vertex> path = ConstructPath(aFrom,(*i).second);
path.push_back(aCurrentNode);
return path;
}else
{
std::vector<Vertex> path;
path.push_back(aCurrentNode);
return path;
}
}
示例8: DepthFirstTour
void Graph::DepthFirstTour(int v)
{
VertexIterator iter = vertices.find(v);
if (iter != vertices.end())
{
if (iter->second.visited == false)
{
iter->second.visited = true;
std::list<Edge>::iterator liter = iter->second.adjList.begin();
for (; liter != iter->second.adjList.end(); ++liter)
{
DepthFirstTour(liter->dest);
}
cout << iter->second.orig << " ";
}
}
}
示例9: DrawMesh
void RigidBody::DrawMesh()
{
/*
//Cube!
glBegin(GL_QUADS);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f( 1.0f, 1.0f,-1.0f);
glVertex3f(-1.0f, 1.0f,-1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);
glColor3f(1.0f,0.5f,0.0f);
glVertex3f( 1.0f,-1.0f, 1.0f);
glVertex3f(-1.0f,-1.0f, 1.0f);
glVertex3f(-1.0f,-1.0f,-1.0f);
glVertex3f( 1.0f,-1.0f,-1.0f);
glColor3f(1.0f,0.0f,0.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f,-1.0f, 1.0f);
glVertex3f( 1.0f,-1.0f, 1.0f);
glColor3f(1.0f,1.0f,0.0f);
glVertex3f( 1.0f,-1.0f,-1.0f);
glVertex3f(-1.0f,-1.0f,-1.0f);
glVertex3f(-1.0f, 1.0f,-1.0f);
glVertex3f( 1.0f, 1.0f,-1.0f);
glColor3f(0.0f,0.0f,1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f,-1.0f);
glVertex3f(-1.0f,-1.0f,-1.0f);
glVertex3f(-1.0f,-1.0f, 1.0f);
glColor3f(1.0f,0.0f,1.0f);
glVertex3f( 1.0f, 1.0f,-1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);
glVertex3f( 1.0f,-1.0f, 1.0f);
glVertex3f( 1.0f,-1.0f,-1.0f);
glEnd();
*/
typedef map<VertexId, Vertex> VertexMap;
VertexMap vertices = m_Geom.GetVertices();
VertexMap::const_iterator end = vertices.end();
/*
glColor3f(1.0,0.0,0.0);
glBegin(GL_POINTS);
for (VertexMap::const_iterator it = vertices.begin(); it != end; ++it)
{
glPushMatrix();
glVertex3f((*it).second.GetPos().GetX(),
(*it).second.GetPos().GetY(),
(*it).second.GetPos().GetZ());
glPopMatrix();
}
glEnd();
*/
glCallList(m_RigidBodyList);
/*
glColor3f(1.0,1.0,0.0);
typedef map<FaceId, Face> FaceMap;
FaceMap faces = m_Geom.GetFaces();
FaceMap::const_iterator itFaceEnd = faces.end();
for (FaceMap::const_iterator itFace = faces.begin(); itFace != itFaceEnd; ++itFace)
{
glBegin(GL_POLYGON);
vector<VertexId> vertexIds = (*itFace).second.GetVertexIds();
vector<VertexId>::iterator vItEnd = vertexIds.end();
for(vector<VertexId>::iterator vIt = vertexIds.begin() ;
vIt != vItEnd ;
vIt++)
{
Vertex vertex = m_Geom.GetVertex((*vIt));
glPushMatrix();
glVertex3f(vertex.GetPos().GetX(),
vertex.GetPos().GetY(),
vertex.GetPos().GetZ());
glPopMatrix();
}
glEnd();
}
*/
}