本文整理汇总了C++中Writer::addNeighbor方法的典型用法代码示例。如果您正苦于以下问题:C++ Writer::addNeighbor方法的具体用法?C++ Writer::addNeighbor怎么用?C++ Writer::addNeighbor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Writer
的用法示例。
在下文中一共展示了Writer::addNeighbor方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: writePfpGraph
void writePfpGraph(const std::string& inputFile, const std::string& outputFile) {
typedef Galois::Graph::FileGraph ReaderGraph;
typedef ReaderGraph::GraphNode ReaderGNode;
ReaderGraph reader;
reader.structureFromFile(inputFile);
typedef Galois::Graph::FileGraphWriter Writer;
typedef Galois::LargeArray<EdgeTy> EdgeData;
typedef typename EdgeData::value_type edge_value_type;
Writer p;
EdgeData edgeData;
// Count edges
size_t numEdges = 0;
for (ReaderGraph::iterator ii = reader.begin(), ei = reader.end(); ii != ei; ++ii) {
ReaderGNode rsrc = *ii;
for (ReaderGraph::edge_iterator jj = reader.edge_begin(rsrc),
ej = reader.edge_end(rsrc); jj != ej; ++jj) {
ReaderGNode rdst = reader.getEdgeDst(jj);
if (rsrc == rdst) continue;
if (!reader.hasNeighbor(rdst, rsrc))
++numEdges;
++numEdges;
}
}
p.setNumNodes(reader.size());
p.setNumEdges(numEdges);
p.setSizeofEdgeData(sizeof(edge_value_type));
p.phase1();
for (ReaderGraph::iterator ii = reader.begin(), ei = reader.end(); ii != ei; ++ii) {
ReaderGNode rsrc = *ii;
for (ReaderGraph::edge_iterator jj = reader.edge_begin(rsrc),
ej = reader.edge_end(rsrc); jj != ej; ++jj) {
ReaderGNode rdst = reader.getEdgeDst(jj);
if (rsrc == rdst) continue;
if (!reader.hasNeighbor(rdst, rsrc))
p.incrementDegree(rdst);
p.incrementDegree(rsrc);
}
}
EdgeTy one = 1;
static_assert(sizeof(one) == sizeof(uint32_t), "Unexpected edge data size");
one = Galois::convert_le32(one);
p.phase2();
edgeData.create(numEdges);
for (ReaderGraph::iterator ii = reader.begin(), ei = reader.end(); ii != ei; ++ii) {
ReaderGNode rsrc = *ii;
for (ReaderGraph::edge_iterator jj = reader.edge_begin(rsrc),
ej = reader.edge_end(rsrc); jj != ej; ++jj) {
ReaderGNode rdst = reader.getEdgeDst(jj);
if (rsrc == rdst) continue;
if (!reader.hasNeighbor(rdst, rsrc))
edgeData.set(p.addNeighbor(rdst, rsrc), 0);
EdgeTy cap = useUnitCapacity ? one : reader.getEdgeData<EdgeTy>(jj);
edgeData.set(p.addNeighbor(rsrc, rdst), cap);
}
}
edge_value_type* rawEdgeData = p.finish<edge_value_type>();
std::copy(edgeData.begin(), edgeData.end(), rawEdgeData);
p.structureToFile(outputFile);
}