本文整理汇总了C++中NetworkNode::getOutgoingLinks方法的典型用法代码示例。如果您正苦于以下问题:C++ NetworkNode::getOutgoingLinks方法的具体用法?C++ NetworkNode::getOutgoingLinks怎么用?C++ NetworkNode::getOutgoingLinks使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NetworkNode
的用法示例。
在下文中一共展示了NetworkNode::getOutgoingLinks方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: extractLayers
void NetworkPlan::extractLayers() {
int size = 0;
int size2 = 0;
int size3 = 0;
vector<NetworkNode*>* curLayer = new vector<NetworkNode*>();
vector<NetworkNode*>* nextLayer = NULL;
NetworkNode* tmpNode = NULL;
NetworkNode* tmpNode2 = NULL;
bool noMoreIncoming = false;
bool isFirst = true;
bool finishAdded = false;
while (true) {
if (isFirst) {
curLayer->push_back(_S);
_layers->push_back(curLayer);
isFirst = false;
} else if (finishAdded) break;
nextLayer = new vector<NetworkNode*>();
size = curLayer->size();
// Исключаем исходящие ссылки из узлов текущего слоя.
for (int j = 0; j < size; j++) {
tmpNode = curLayer->at(j);
size2 = tmpNode->getOutgoingLinks()->size();
for (int k = 0; k < size2; k++) {
tmpNode->getOutgoingLinks()->at(k)->excluded = true;
}
}
// Проверяем, есть ли другие входящие работы для узлов,
// являющихся следующими для узлов текущего слоя.
for (int j = 0; j < size; j++) {
tmpNode = curLayer->at(j);
size2 = tmpNode->getOutgoingLinks()->size();
for (int k = 0; k < size2; k++) {
tmpNode2 = tmpNode->getOutgoingLinks()->at(k)->dst;
size3 = tmpNode2->getIncomingLinks()->size();
noMoreIncoming = true;
for (int l = 0; l < size3; l++) {
if (tmpNode2->getIncomingLinks()->at(l)->excluded != true) {
noMoreIncoming = false;
break;
}
}
// Если для узла нет работ, не отмеченных как исключённые,
// и он не добавлен в следующий слой, добавляем.
if (noMoreIncoming
&& find(nextLayer->begin(), nextLayer->end(), tmpNode2) == nextLayer->end()) {
nextLayer->push_back(tmpNode2);
if (tmpNode2 == _F) finishAdded = true;
}
}
}
_layers->push_back(nextLayer);
curLayer = nextLayer;
}
}