本文整理汇总了C++中SListPure::size方法的典型用法代码示例。如果您正苦于以下问题:C++ SListPure::size方法的具体用法?C++ SListPure::size怎么用?C++ SListPure::size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SListPure
的用法示例。
在下文中一共展示了SListPure::size方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: extractExternalFacePath
// extract external facepath in direction CCW and split the highest facepath
// in highest xy-paths. marker marks the node, highMarker is used to check,
// whether the node was visited before by the highest facepath traversal.
// highMarker+1 identifies the nodes that are zNodes.
void FindKuratowskis::extractExternalFacePath(
SListPure<adjEntry>& externalFacePath,
const ListPure<adjEntry>& highestFacePath,
int marker,
int highMarker)
{
int dir = CCW;
// x traverses the external facepath
node x = pBM->successorWithoutShortCircuit(k.R,dir);
externalFacePath.pushBack(pBM->beforeShortCircuitEdge(k.R,CCW));
m_wasHere[k.R] = marker;
while (x != k.R) {
// set visited sign on nodes that are both on the highest and external facepath
if (m_wasHere[x]>=highMarker) m_wasHere[x] = marker;
externalFacePath.pushBack(pBM->beforeShortCircuitEdge(x,dir));
x = pBM->successorWithoutShortCircuit(x,dir);
}
dir = CCW;
x = pBM->successorWithoutShortCircuit(k.R,dir);
ListConstIterator<adjEntry> highIt = highestFacePath.begin();
OGDF_ASSERT(x == (*highIt)->theNode());
SListPure<adjEntry> XYPathList;
SListPure<adjEntry> zList;
WInfo info;
adjEntry adj = pBM->beforeShortCircuitEdge(k.R,CCW);
adjEntry temp;
while (x != k.R) {
// go along the highest face path until next visited sign
OGDF_ASSERT(adj->theNode()==x);
if (m_wasHere[x] == marker) {
XYPathList.clear();
zList.clear();
info.w = NULL;
info.minorType = 0;
info.highestXYPath = NULL;
info.zPath = NULL;
info.pxAboveStopX = false;
info.pyAboveStopY = false;
info.externEStart = NULL;
info.externEEnd = NULL;
info.firstExternEAfterW = NULL;
}
// push in wNodes-list
if (pBM->pertinent(x)) {
info.w = x;
k.wNodes.pushBack(info);
}
// compute next highestXYPath
if (m_wasHere[x] == marker &&
m_wasHere[pBM->constSuccessorWithoutShortCircuit(x,dir)] != marker) {
// traverse highFacePath to x
while ((*highIt)->theNode() != x) ++highIt;
OGDF_ASSERT(highIt.valid());
XYPathList.pushBack(adj);
OGDF_ASSERT((*highIt.succ())->theNode() !=
pBM->constSuccessorWithoutShortCircuit(x,dir));
// traverse highFacePath to next marker
do {
++highIt;
if (!highIt.valid()) break;
temp = *highIt;
XYPathList.pushBack(temp);
// check, if node is z-node and push one single z-node
if (m_wasHere[temp->theNode()]==highMarker+1 && zList.empty())
zList.pushBack(temp);
} while (m_wasHere[temp->theNode()] != marker);
// save highestXY-Path
OGDF_ASSERT(!XYPathList.empty());
k.highestXYPaths.pushBack(XYPathList);
info.highestXYPath = &k.highestXYPaths.back();
// compute path from zNode to V and save it
if (!zList.empty()) {
OGDF_ASSERT(zList.size()==1); // just one zNode for now
temp = zList.back();
do {
do {
temp = temp->cyclicSucc();
OGDF_ASSERT(m_dfi[temp->twinNode()]==m_dfi[k.R] ||
m_dfi[temp->twinNode()]>=m_dfi[k.RReal]);
} while (m_edgeType[temp->theEdge()]==EDGE_BACK_DELETED);
temp = temp->twin();
zList.pushBack(temp);
} while (temp->theNode() != k.R);
k.zPaths.pushBack(zList);
info.zPath = &k.zPaths.back();
}
}
// go on
adj = pBM->beforeShortCircuitEdge(x,dir);
//.........这里部分代码省略.........