我有一段代码要从 Fortran 迁移到 C++,我想避免一些我必须在原始 F77 代码中创建的嵌套 for 循环结构。
问题是这样的:我有一个称为节点的对象向量,每个对象都包含一个向量,其中包含一个向量,其中包含每个连接到的其他节点对象的索引(以及其他重要信息)(连接图)。像这样
struct Node {
vector<int> conNode;
};
vector<Node> listOfNodes;
vector<int> nodeListA; // a subset of nodes of interest stored as their vector indices
我需要查找 nodeListA 中的节点连接到的节点,但前提是这些节点也在 nodeListA 中。现在,我的代码看起来像这样:
// Loop over the subset of node indices
for (int i=0; i<nodeListA.size(); i++) {
// Loop over the nodes connected to the node i
for (int j=0; j<listOfNodes[nodeListA[i]].conNode.size(); j++) {
// Loop over the subset of node indices again
for (int k=0; k<nodeListA.size(); k++) {
// and determine if any of node i's connections are in the subset list
if (nodeListA[k] == listOfNodes[nodeListA[i]].conNode[j]) {
// do stuff here
}
}
}
}
必须有一种更简单的方法来做到这一点。好像我把这种方式弄得太复杂了。如何简化此代码,可能使用标准算法库?