return vector with correct edges
This commit is contained in:
parent
748ade5fea
commit
54c35710f6
@ -68,15 +68,15 @@ struct EdgeBasedGraphReader
|
|||||||
// and should really be abstracted over.
|
// and should really be abstracted over.
|
||||||
|
|
||||||
auto directed = SplitBidirectionalEdges(edges);
|
auto directed = SplitBidirectionalEdges(edges);
|
||||||
auto tidied = PrepareEdgesForUsageInGraph(directed);
|
auto tidied = PrepareEdgesForUsageInGraph(std::move(directed));
|
||||||
|
|
||||||
return std::make_unique<EdgeBasedGraph>(num_nodes, tidied);
|
return std::make_unique<EdgeBasedGraph>(num_nodes, std::move(tidied));
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Bidirectional (s,t) to (s,t) and (t,s)
|
// Bidirectional (s,t) to (s,t) and (t,s)
|
||||||
static std::vector<extractor::EdgeBasedEdge>
|
std::vector<extractor::EdgeBasedEdge>
|
||||||
SplitBidirectionalEdges(std::vector<extractor::EdgeBasedEdge> edges)
|
SplitBidirectionalEdges(const std::vector<extractor::EdgeBasedEdge> &edges)
|
||||||
{
|
{
|
||||||
std::vector<extractor::EdgeBasedEdge> directed;
|
std::vector<extractor::EdgeBasedEdge> directed;
|
||||||
directed.reserve(edges.size() * 2);
|
directed.reserve(edges.size() * 2);
|
||||||
@ -100,12 +100,10 @@ struct EdgeBasedGraphReader
|
|||||||
edge.forward);
|
edge.forward);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::swap(directed, edges);
|
|
||||||
|
|
||||||
return directed;
|
return directed;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::vector<EdgeBasedGraphEdge>
|
std::vector<EdgeBasedGraphEdge>
|
||||||
PrepareEdgesForUsageInGraph(std::vector<extractor::EdgeBasedEdge> edges)
|
PrepareEdgesForUsageInGraph(std::vector<extractor::EdgeBasedEdge> edges)
|
||||||
{
|
{
|
||||||
std::sort(begin(edges), end(edges));
|
std::sort(begin(edges), end(edges));
|
||||||
|
Loading…
Reference in New Issue
Block a user