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


C++ NetworkNode::getOutgoingLinks方法代码示例

本文整理汇总了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;
	}
}
开发者ID:ddolgushin,项目名称:study,代码行数:68,代码来源:NetworkPlanning.cpp


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